这是我的问题。我从我的数据库中获得的日期包含“12/31/2013”。根据此日期,格式为mm / dd / yy。现在的问题是我如何做到这一点,无论用户计算机中的日期格式如何,他们总是将日期“12/31/2013”读作mm / dd / yy而不是示例dd / mm / yy当它读取它包含一个错误,因为没有31个月。我从我的数据库收到的日期尝试拆分方法,但我不能让它确认独立于用户计算机的格式
答案 0 :(得分:1)
您的日期是以实际date
格式还是以字符串形式存储在数据库中?
请记住,默认情况下DateTime.Parse
使用当前用户的当前系统日期/时间格式设置(因此英国用户为dd / MM / yyyy,但美国用户为MM / dd / yyyy)。如果要进行统一解析,请使用DateTime.ParseExact
并指定精确的解析格式字符串。
一个有用的经验法则是“如果你曾经使用过String.Split
,你可能做错了什么”(我会对快速和肮脏的副设计程序做例外,但是对于解析格式字符串,正则表达式或有限状态机更高性能(更少的字符串分配)和更少的脆弱。
回到主题,如果您的数据库将对象存储为date
或datetime
,则根本不使用字符串。使用.GetDateString(int)
的{{1}}方法或EF类的字段属性。
答案 1 :(得分:0)
目前尚不清楚是否要从数据库中读取相同的格式或在屏幕上显示它(UI)
如果是来自sql server,请考虑使用convert< - 请点击此链接
答案 2 :(得分:0)
您是如何从数据库中获取日期的?您是否将日期存储为字符串?如果可能,请考虑将日期保留为DateTime
变量而不是字符串。如果不可能,请查看支持国际化的DateTime.TryParse
方法,并且应该能够理解用户的UI本地化设置。