我的字符串(变量为fileDate
)的日期值采用以下格式:
2/12/2011 11:58 AM
现在我想将此转换为日期然后转换为UTC时间,因为我在比较不同机器中的日期时遇到问题,所以*我总是希望将所有字符串(要比较的字符串)转换为Utc_date值。*
我在下面尝试了这段代码,但它没有用,因为我无法将上面的字符串转换为基于日期时间(因为它没有秒)。
DateTime date = Convert.ToDateTime(fileDate);
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
fileDate = date.ToString("MM/dd/yyyy hh:mm tt");
上面没有显示FormatException。 你能帮忙吗?
答案 0 :(得分:2)
首先,我建议使用DateTime.ParseExact
或TryParseExact
- 我不清楚您的样本是在12月2日还是2月12日。指定格式可能会删除FormatException
。
下一个问题是找出你想要转换它的时区 - 你是说在某个时区里11:58是本地时间,或者已经> em> UTC时间?
DateTimeStyles.AssumeLocal | DateTimeStyles.AdjustToUniversal
作为解析的一部分来执行此操作。DateTimeStyles.AssumeUniversal
TimeZoneInfo
执行转换。此外,如果是当地时间,您需要考虑两个极端情况(假设您正在使用观察夏令时的时区):
您应该决定如何处理这些案例,并确保在单元测试中涵盖这些案例。
另一种选择是使用我的日期和时间库Noda Time,它更明确地区分“本地日期/时间”和“特定时区的日期/时间”(和其他)的概念。 / p>
答案 1 :(得分:0)
您应该使用DateTime.ParseExact
将值传入正确的DateTime实例,然后您可以使用.ToUniversalTime()
来获取UTC时间(这将与时间的差异有关)你的服务器机器)
答案 2 :(得分:0)
你可以使用:
DateTime.Now.ToUniversalTime();
我不是故意要对你说“DateTime.Now”,但是你得到的结论是,作为DateTime对象的一部分,你有一个方法可以将它转换为通用时间
http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx