您不能依赖无参数DateTimeOffset.ToString()
方法与文化无关。我建议使用往返格式说明符("O"
或"o"
)根据 ISO 8601 标准明确格式化您的日期(以便在所有文化下正确解析),同时保留时区信息。
来自 MSDN:
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1,
TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(dateOffset.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000-07:00
timeago网站似乎表明它支持 ISO 8601 。
编辑:"o"
格式说明符等效于以下自定义格式字符串:
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz"
如果您想将精度限制为毫秒,您可以调整它:
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1, new TimeSpan(-7, 0, 0));
Console.WriteLine(dateOffset.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz"));
// Displays 2008-04-10T06:30:00.000-07:00