C# 将日期时间字符串转换为Utc

C# 将日期时间字符串转换为Utc,c#,asp.net,datetime,C#,Asp.net,Datetime,如何在GMT中将日期时间字符串转换为utc时间格式 var x = "02/01/2017 10:00"; var z = DateTime.ParseExact(x, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture); 我不知道你想做什么。但是,世界时、祖鲁时间和UTC实际上是格林威治标准时间GMT的现代名称。因此,这两个时间将是相同的。您可以使用或方法获取UTC时间。我不确定您想做什么。但是,世界时、祖鲁时间和

如何在GMT中将日期时间字符串转换为utc时间格式

var x = "02/01/2017 10:00";
var z = DateTime.ParseExact(x, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture);

我不知道你想做什么。但是,世界时、祖鲁时间和UTC实际上是格林威治标准时间GMT的现代名称。因此,这两个时间将是相同的。您可以使用或方法获取UTC时间。

我不确定您想做什么。但是,世界时、祖鲁时间和UTC实际上是格林威治标准时间GMT的现代名称。因此,这两个时间将是相同的。您可以使用或方法获取UTC时间。

实际上,您尝试的是错误的,您可以做的是,获取与给定日期等效的日期时间值,然后将其转换为UTC时间,尝试以下操作:

string inputDateStr = "02/01/2017 10:00";
DateTime inputDate;
if (DateTime.TryParseExact(inputDateStr, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out inputDate))
{
    Console.WriteLine("Date time Now  : {0} ", inputDate);
    Console.WriteLine("Date time UTC  : {0} ", inputDate.ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'"));                
}

实际上,您尝试的方法是错误的,您可以做的是,获取与给定日期等效的日期时间值,然后将其转换为UTC时间,尝试以下操作:

string inputDateStr = "02/01/2017 10:00";
DateTime inputDate;
if (DateTime.TryParseExact(inputDateStr, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out inputDate))
{
    Console.WriteLine("Date time Now  : {0} ", inputDate);
    Console.WriteLine("Date time UTC  : {0} ", inputDate.ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'"));                
}

你问什么还不完全清楚。。。UTC不是一种格式,它是一个时区,相当于格林尼治标准时间。事实上,这并不是严格正确的,但就这个问题而言,它应该是可以的

您的字符串代表什么时间点?是UTC吗?还是莫斯科的当地时间?你需要知道答案,因为他们是完全不同的时代

如果字符串表示UTC时间,则可以执行以下操作:

//首先将其解析为DateTime对象。请注意,格式字符串与您拥有的字符串相对应-在代码中,它们完全不同

var dateTimeWithUnspecifiedKind = DateTime.ParseExact(x, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
那么你如何拥有一个datetime对象。它有一种未指定的属性。所以它没有存储任何信息来指定它应该是UTC,而不是莫斯科或纽约时间

//所以我们这样做

var dateTimeAsUtc = DateTime.SpecifyKind(dateTimeWithUnspecifiedKind, DateTimeKind.Utc);
这意味着,保持数字不变,但请注意datetime将被解释为UTC datetime

然后,如果要将其转换回字符串,可以执行以下操作:

var s = dateTimeAsUtc.ToString("O");
这将为您提供一个很好的表示:

2017-01-02T10:00:00.0000000Z
幸运的是,您对UTC感兴趣。datetime类只能执行UTC、local或未指定的操作。这对这类事情不是很有用。DateTimeOffset稍微好一点-它基本上是一个DateTime,但它也存储UTC和当时生效的偏移量之间的差异


这可能就是你所需要的。不过,如果你真的需要弄清楚这一点,不妨看看野田佳彦时间(Noda time)——一组可供选择的.NET日期和时间类。

你的问题并不完全清楚。。。UTC不是一种格式,它是一个时区,相当于格林尼治标准时间。事实上,这并不是严格正确的,但就这个问题而言,它应该是可以的

您的字符串代表什么时间点?是UTC吗?还是莫斯科的当地时间?你需要知道答案,因为他们是完全不同的时代

如果字符串表示UTC时间,则可以执行以下操作:

//首先将其解析为DateTime对象。请注意,格式字符串与您拥有的字符串相对应-在代码中,它们完全不同

var dateTimeWithUnspecifiedKind = DateTime.ParseExact(x, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
那么你如何拥有一个datetime对象。它有一种未指定的属性。所以它没有存储任何信息来指定它应该是UTC,而不是莫斯科或纽约时间

//所以我们这样做

var dateTimeAsUtc = DateTime.SpecifyKind(dateTimeWithUnspecifiedKind, DateTimeKind.Utc);
这意味着,保持数字不变,但请注意datetime将被解释为UTC datetime

然后,如果要将其转换回字符串,可以执行以下操作:

var s = dateTimeAsUtc.ToString("O");
这将为您提供一个很好的表示:

2017-01-02T10:00:00.0000000Z
幸运的是,您对UTC感兴趣。datetime类只能执行UTC、local或未指定的操作。这对这类事情不是很有用。DateTimeOffset稍微好一点-它基本上是一个DateTime,但它也存储UTC和当时生效的偏移量之间的差异


这可能就是你所需要的。不过,如果你真的需要弄清楚这一点,不妨看看野田佳彦时间(Noda time)——一组可供选择的.NET日期和时间类。

不清楚你在问什么。请指定您期望的输出不清楚您的要求。请指定您期望的输出。请使用{}按钮设置代码部分的格式,以便您的文章更具可读性。抱歉-这是我的第一篇文章-我将在下次之前阅读格式!请使用{}按钮设置代码部分的格式,以便您的文章更具可读性。抱歉-这是我的第一篇文章-我将在下次之前阅读格式设置!你好谢谢你的例子。如何获取datetime而不是字符串中的inputDate。如果输入是datetime,则使用inputDate.ToUniversalTime.ToStringdd,dd MMM yyyy HH:mm:ss“GMT”仅无需转换我需要datetime格式的inputDateTime。所以我输入了date.ToUniversalTime.tostringdd,dd-MMM-yyyy-HH:mm:ss'GMT'。ToDateTime,转换为datetime.Hi。谢谢
例如工作。如何获取datetime而不是字符串中的inputDate。如果输入是datetime,则使用inputDate.ToUniversalTime.ToStringdd,dd MMM yyyy HH:mm:ss“GMT”仅无需转换我需要datetime格式的inputDateTime。所以我输入了date.ToUniversalTime.tostringdd,dd-MMM-yyyy-HH:mm:ss'GMT'。ToDateTime,以转换为datetime。