首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >格式化本地时区中的UTC时间戳

格式化本地时区中的UTC时间戳
EN

Stack Overflow用户
提问于 2019-02-04 18:10:57
回答 3查看 1.4K关注 0票数 1

我有一个用DateTime类创建的UTC时间戳。

var time = DateTime.UtcNow;

当我格式化它时,我得到以下结果:

代码语言:javascript
运行
复制
time.ToString("yyyy-MM-ddTHH:mm:sszzz")
> 2019-02-03T10:08:40+00:00

这是正确的,但我希望它在本地时区中的格式如下:

2019-02-03T11:08:40+01:00 <注意+01:00

我怎么才能得到这个呢?

我可以在本例中使用DateTime.Local,但时间戳实际上来自另一个系统/模块,因此解决方案必须在类似DateTime.UtcNow的系统上工作

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-04 20:08:42

如果您对将UTC DateTime转换为特定时区的本地时间感兴趣,可以查看TimeZoneInfo类。下面是一个示例:

代码语言:javascript
运行
复制
var utcDate = DateTime.UtcNow;

// 04/02/2019 11:23:39
// Kind is Utc

var localDate = utcDate.ToLocalTime();

// 04/02/2019 12:23:39
// Kind is now local

var timeZoneId = "US Eastern Standard Time";

var timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);

DateTime usEasternStandardDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, timeZone);

// 04/02/2019 06:23:39
// Kind is unspecified

此外,您还可以查看Convert UTC/GMT time to local time了解更多详细信息,查看List of Timezone ID's for use with FindTimeZoneById() in C#?了解受支持时区的完整列表

票数 1
EN

Stack Overflow用户

发布于 2019-02-04 18:24:15

我做了一些测试,但我相信您将需要使用DateTime.Now,而不是DateTime.UtcNow。

当您在格式中使用'z‘字符时,转换会考虑到您需要时间偏移量,并相应地更改时间。

试一下下面的方法,让我知道它是否适用于你:

DateTime.Now.ToString("yyyy-MM-ddTHH:MM:sszzzz")

这给了我2019-02-04T10:02:32+00:00 (虽然我在协调世界时的时区)

票数 2
EN

Stack Overflow用户

发布于 2019-02-04 18:59:05

DateTime.UtcNow提供协调世界时的当前时间,其中时间偏移区为0。改为DateTime.Now以获取本地时间。

代码语言:javascript
运行
复制
DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss K")
// 2019-02-04T08:36:11 -02:00

DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss K")
// 2019-02-04T10:36:22 Z
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54513911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档