本地到GMT日期时间转换

时间:2012-07-26 09:44:58

标签: c# datetime .net-4.0

我正在使用Amazon API。我需要将本地时间(EDT)转换为符合亚马逊以下文档的DateTime:

You can specify the FulfillmentDate with or without time zone information:

2006-12-11T09:50:00 - local time zome applies
2006-12-11T09:50:00+02:00 - GMT time zone applies

For locales affected by Daylight Saving  Time, adjust the information, if necessary. 
Daylight Saving Time is not automatically taken into consideration.

我认为我需要做this SO thread中显示的内容,但显然是错误的,因为当我使用该方法上传日期时,亚马逊会在前一天显示它。我可以使用this online converter tool确认这一点。

例如:

  • 我当地的时间是“7/25/2012 00:00:00”(美国东部时间)。

  • 使用上面的SO方法,并进行格式化,现在就是 “2012-07-25T01:00:00-04:00”

  • 但它转换为24日,特别是“2012年7月24日星期二 21点00" 分00秒。

显然我在这里做错了 - 如果有人可以启发我,我会很感激。

谢谢!

3 个答案:

答案 0 :(得分:1)

我建议使用:

String xmlDateString = XmlConvert.ToString(DateTime.UtcNow,XmlDateTimeSerializationMode.Local);

答案 1 :(得分:1)

显然亚马逊会将您当地的时间信息转换回UTC时间(这是基于您在4小时后回来的输入:2012年7月24日星期二21:00:00,因此正确)。

您期望得到哪些结果?

答案 2 :(得分:0)

我想我可以介绍Jon Skeet写的“joda time”项目。您可以参考链接pros and cons of joda time