Dve*_*Dve 59 c# datetime parsing
为什么不解析这个:
DateTime.Parse("Tue, 1 Jan 2008 00:00:00 UTC")
Run Code Online (Sandbox Code Playgroud)
Sim*_*ens 71
它无法解析该字符串,因为"UTC"不是有效的时区指示符.
UTC时间通过在时间字符串的末尾添加"Z"来表示,因此您的解析代码应如下所示:
DateTime.Parse("Tue, 1 Jan 2008 00:00:00Z");
Run Code Online (Sandbox Code Playgroud)
如果时间是UTC,则在没有空格的时间之后直接添加"Z".'Z'是零UTC偏移的区域指示符.因此,"09:30 UTC"表示为"09:30Z"或"0930Z"."14:45:15 UTC"将是"14:45:15Z"或"144515Z".
UTC时间也被称为'Zulu'时间,因为'Zulu'是'Z'的北约语音字母词.
Dav*_*len 47
假设您使用格式"o"作为日期时间,因此您有"2016-07-24T18:47:36Z",有一种非常简单的方法来处理这个问题.
打电话DateTime.Parse("2016-07-24T18:47:36Z").ToUniversalTime().
当你打电话时会发生什么,你DateTime.Parse("2016-07-24T18:47:36Z")得到一个DateTime当地时区的设置.所以它将它转换为当地时间.
将其ToUniversalTime()更改为UTC DateTime并将其转换回UTC时间.
Dar*_*rov 17
您需要指定格式:
DateTime date = DateTime.ParseExact(
"Tue, 1 Jan 2008 00:00:00 UTC",
"ddd, d MMM yyyy HH:mm:ss UTC",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
Ric*_*ves 16
只需使用:
var myDateUtc = DateTime.SpecifyKind(DateTime.Parse("Tue, 1 Jan 2008 00:00:00"), DateTimeKind.Utc);
if (myDateUtc.Kind == DateTimeKind.Utc)
{
Console.WriteLine("Yes. I am UTC!");
}
Run Code Online (Sandbox Code Playgroud)
您可以使用在线c#编译器测试此代码:
我希望它有所帮助.
小智 12
或者在调用时使用AdjustToUniversal DateTimeStyle
DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
Run Code Online (Sandbox Code Playgroud)
小智 9
要正确解析问题中给出的字符串而不更改它,请使用以下命令:
using System.Globalization;
string dateString = "Tue, 1 Jan 2008 00:00:00 UTC";
DateTime parsedDate = DateTime.ParseExact(dateString, "ddd, d MMM yyyy hh:mm:ss UTC", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal);
Run Code Online (Sandbox Code Playgroud)
此实现使用字符串来指定要解析的日期字符串的确切格式.DateTimeStyles参数用于指定给定字符串是协调的通用时间字符串.
这不是一个有效的格式,但是"星期二,2008年1月1日00:00:00 GMT"是.
文档说是这样的:
包含时区信息并符合ISO 8601的字符串.例如,以下两个字符串中的第一个指定协调世界时(UTC); 第二个指定比UTC早7个小时的时区:
2008-11-01T19:35:00.0000000Z
包含GMT指示符并符合RFC 1123时间格式的字符串.例如:
2008年11月1日星期六19:35:00 GMT
包含日期和时间以及时区偏移信息的字符串.例如:
03/01/2009 05:42:00 -5:00
| 归档时间: |
|
| 查看次数: |
94913 次 |
| 最近记录: |