有没有办法将1970年1月1日格林尼治标准时间转换为日期时间?
如果我只指定新的日期(1970,1,1),我将使用当前时区获取它。
发布于 2009-09-12 23:10:02
等于 (协调世界时),或多或少(除非你处理的是秒的分数,没有区别)。是DateTime构造函数中内置的一个枚举,它允许您选择是按本地时区显示时间还是按协调世界时显示时间。使用它,我们可以实现GMT的等价物。
我们要使用的构造函数如下所示:
DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind)或(一个有毫秒参数,另一个没有):
DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind)要在UTC中获取 1970年1月1日的DateTime,我们可以使用以下命令:
DateTime inGMT = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); //using 1st constructor above或
DateTime inGMT = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); //using 2nd constructor above注意:枚举DateTimeKind的内容如下:
未指定的本地时间(可以是本地时间或UTC)
UPDATE:Thomas Levesque在他的答案中提出了一个非常有创意的解决方案,但我不确定它是否是最直接的方法,以及它是否是一个可行的方法,可以在任何时区使用。我认为他的意思是,您可以从DateTime.Now和DateTime.UtcNow,计算DateTimeOffset,并将计算出的偏移量应用到您所在时区的1970年1月1日,这样您就可以得到协调世界时/格林尼治标准时间。我不确定有没有简单的方法来计算到其他时区的偏移量,然后这个问题就变得有点多余了。
更新#2:我添加了另一个DateTime构造函数,它完成相同的任务,但缺少毫秒参数。它们是可互换的。
发布于 2009-09-12 22:55:09
出于所有实际目的,GMT与协调世界时是相同的。
这意味着您可以只使用一个接受DateTimeKind参数的DateTime constructors,将其设置为DateTimeKind.Utc。
DateTime gmt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);https://stackoverflow.com/questions/1416355
复制相似问题