想象一个抽象问题。日期格式和客户端 - 服务器交互
有一个客户端(C
)与服务器交互(S
)。他们更改日期变量(d
)。
服务器可以是法语或英语,也可以是客户端。
法国客户(“31/12/2011”)发送到英文服务器(“12/31/2011”)的日期无法识别。反之亦然。
如何在.NET中避免这样的问题。
想象一个抽象问题。日期格式和客户端 - 服务器交互
有一个客户端(C
)与服务器交互(S
)。他们更改日期变量(d
)。
服务器可以是法语或英语,也可以是客户端。
法国客户(“31/12/2011”)发送到英文服务器(“12/31/2011”)的日期无法识别。反之亦然。
如何在.NET中避免这样的问题。
您是否控制了客户端和服务器?如果是这样,就就格式和文化达成一致意见 - 我建议不变的文化 - 并明确确保双方都坚持这一点。
你可以很容易解析和使用固定区域性.NET格式 - 寻找ToString
和Parse
/TryParse
重载其中包括IFormatProvider
参数。
使用Ticks属性在客户端和服务器之间发送它。这是一个数字,并且无论您想要将日期格式化为什么,它都将保持不变。
你有什么理由把你的日期作为字符串发送吗?最好的事情是使用DateTime数据类型分享日期。如果出于任何原因,您可以发送字符串,最好是将日期值转换为LongDateFormat,然后传输,可以在另一端解析以获取有意义的日期。
说我们控制两者。但是,你的意思是“双方都坚持它”。据我所知,我用法文格式(31/12)存储法文客户端用户界面接收到的数据,将其转换为不变的文化(??/??),将其存储在该文化中的数据库中,从数据库中读取该“不变的“文化(?? /?),并将其发送到英文客户端用户界面到本地(英文)格式(12/31)? – serhio 2011-02-07 19:30:17
可能是一个数据库有它自己的日期格式,这将强制字段类型àla“DateTime”在数据库中安装的本地文化?说法语SQL Server只保留日期“dd/mm/yyyy“格式或类似的东西? – serhio 2011-02-07 19:33:11