2011-02-07 80 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,然后传输,可以在另一端解析以获取有意义的日期。