我有asp.net站点(Framework 4.0),它工作正常,在SQM 2000数据库中记录用户登录/注销时间。我使用此方法Convert.ToString(DateTime.UtcNow)
来获取系统时间。
有一段时间它保存了“yyyy-MM-dd”格式,它很好但有些时候“yyyy-dd-MM”,所以如何调试它,在共享环境中托管网站,所以我认为时间格式会保持一致
同样使用两种格式。所以我无法重现它。
即。它保存了今天的日期“2012-03-01”&& “2012-01-03”,
请告诉我,有什么问题吗?
谢谢, Laxmilal Menaria
答案 0 :(得分:0)
似乎服务器的默认文化可能会发生变化。您应该将特定的区域性对象用于任何与文化相关的转换,而不是使用默认值。例如:
CultureInfo culture = new CultureInfo("EN-gb");
string date = Convert.ToString(DateTime.UtcNow, culture);
(当然,您可以保留CultureInfo
对象,但不能为每次使用创建一个。)
或者指定自定义格式:
string date = DateTime.UtcNow.ToString("yyyy'-'MM'-'dd");
我试图寻找一个“SQM 2000”数据库来查看它是什么,但没有发现它。如果您指的是Microsoft SQL Server 2000数据库,那么它能够将日期存储为datetime
数据类型,因此您不应该首先将日期转换为字符串。
答案 1 :(得分:0)
首先 - 将日期保存为字符串并不是一个好主意。尝试在数据库中使用日期类型
看起来用户从不同的文化中运行Convert.ToString(DateTime.UtcNow)
。您可以使用Guffa提供的方法,但如果您尝试使用第二个变体,您应该记住,对于某些文化,它可以格式化为“2012/03/01”,因为框架重建“ - ”作为应转换为指定的分隔符的格式符号用户文化。
所以我再次建议您将日期作为日期对象存储在数据库中。