【发布时间】:2013-07-07 12:52:23
【问题描述】:
我在将此日期格式转换为另一种格式时遇到问题。我希望这里的人能够帮助我。
这是我的代码:
string fromFormat = "ddd, dd MM yyyy HH:mm:ss zzz";
string toFormat = "yyyy-MM-dd";
DateTime newDate = DateTime.ParseExact("Mon, 25 03 2013 00:00:00 GMT", fromFormat, null);
Console.WriteLine(newDate.ToString(toFormat));
-------编辑--------
通过将日期从 22 更改为 25,我能够摆脱错误。我的新问题是试图让时区从 GMT 转换为 EST。有人有什么想法吗?
-------编辑#2-------
这是我当前的代码。我仍然遇到时区转换问题。
var date = "Mon, 25 03 2013 00:00:00 GMT";
// Cuts off "GMT" portion of string
string newdate = date.Substring(0, 24);
// Switches the output of date
string fromFormat = "ddd, dd MM yyyy HH:mm:ss";
string toFormat = "yyyy-MM-dd";
DateTime newDate = DateTime.ParseExact(newdate, fromFormat, null);
string finaldate = newDate.ToString(toFormat);
// Output final date
Console.WriteLine(finaldate);
-------编辑#3-------
代码:
var input = "Mon, 25 03 2013 00:00:00 GMT";
var inner = input.Substring(0, 24);
var format = "ddd, dd MM yyyy HH:mm:ss";
var zoneId = "Eastern Standard Time";
var parsed = DateTime.ParseExact(inner, format, CultureInfo.InvariantCulture);
var utcDateTime = DateTime.SpecifyKind(parsed, DateTimeKind.Utc);
var eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcDateTime, zoneId);
Console.WriteLine(eastern);
错误:
Unhandled Exception: System.TimeZoneNotFoundException: Exception of type
'System.TimeZoneNotFoundException' was thrown.
at System.TimeZoneInfo.FindSystemTimeZoneByFileName (System.String id, System.String
filepath) [0x00000] in :0
at System.TimeZoneInfo.FindSystemTimeZoneById (System.String id) [0x00000] in :0
at System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId (DateTime dateTime, System.String
destinationTimeZoneId) [0x00000] in :0
at Program.Main () [0x00000] in :0
任何帮助将不胜感激!谢谢!
-------最终编辑-------
这就是最终更改时区并转换为我需要的格式的原因。特别感谢@MattJohnson 的所有帮助!
// Cuts off 'GMT' portion of string
var newdate = date.Substring(0, 24);
var fromFormat = "ddd, dd MM yyyy HH:mm:ss";
var toFormat = "yyyy-MM-dd";
var zoneId = "Eastern Standard Time";
var parsed = DateTime.ParseExact(newdate, fromFormat, CultureInfo.InvariantCulture);
// Specifies UTC time and converts it to EST timezone
var utcDateTime = DateTime.SpecifyKind(parsed, DateTimeKind.Utc);
var eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcDateTime, zoneId);
// Converts date to final format needed
var finaldate = eastern.ToString(toFormat);
【问题讨论】:
-
您最好从 JavaScript 发送正确的 ISO8601 字符串(类似于
2013-22-03T00:00Z)...