2011-02-07 79 views
2

想象一個抽象問題。日期格式和客戶端 - 服務器交互

有一個客戶端(C)與服務器交互(S)。他們更改日期變量(d)。

服務器可以是法語或英語,也可以是客戶端。

法國客戶(「31/12/2011」)發送到英文服務器(「12/31/2011」)的日期無法識別。反之亦然。

如何在.NET中避免這樣的問題。

回答

4

您是否控制了客戶端和服務器?如果是這樣,就就格式和文化達成一致意見 - 我建議不變的文化 - 並明確確保雙方都堅持這一點。

你可以很容易解析和使用固定區域性.NET格式 - 尋找ToStringParse/TryParse重載其中包括IFormatProvider參數。

+0

說我們控制兩者。但是,你的意思是「雙方都堅持它」。據我所知,我用法文格式(31/12)存儲法文客戶端用戶界面接收到的數據,將其轉換爲不變的文化(??/??),將其存儲在該文化中的數據庫中,從數據庫中讀取該「不變的「文化(?? /?),並將其發送到英文客戶端用戶界面到本地(英文)格式(12/31)? – serhio 2011-02-07 19:30:17

+0

可能是一個數據庫有它自己的日期格式,這將強制字段類型àla「DateTime」在數據庫中安裝的本地文化?說法語SQL Server只保留日期「dd/mm/yyyy「格式或類似的東西? – serhio 2011-02-07 19:33:11

1

使用Ticks屬性在客戶端和服務器之間發送它。這是一個數字,並且無論您想要將日期格式化爲什麼,它都將保持不變。

0

你有什麼理由把你的日期作爲字符串發送嗎?最好的事情是使用DateTime數據類型分享日期。如果出於任何原因,您可以發送字符串,最好是將日期值轉換爲LongDateFormat,然後傳輸,可以在另一端解析以獲取有意義的日期。