You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取.NET C#中DateTimeOffset的本地日期时间?

解决DateTimeOffset转换为目标本地时间的问题

你的代码创建的是一个UTC+5时区的时间点:

var date = new DateTimeOffset(2023, 07, 21, 23, 00, 00, TimeSpan.FromHours(5));

你期望的2023/07/22 04:00 AM是UTC+9时区的时间(原UTC+5的21日23点,加上4小时时差即得到该结果)。要实现这个转换,核心是将DateTimeOffset转换到目标时区后再格式化输出,具体方案如下:

方案1:显式转换到指定时区(推荐)

这种方式不依赖系统本地时区,更稳定:

var date = new DateTimeOffset(2023, 07, 21, 23, 00, 00, TimeSpan.FromHours(5));
// 定义目标时区(UTC+9)
var targetTimeZone = TimeZoneInfo.CreateCustomTimeZone("UTC+9", TimeSpan.FromHours(9), "UTC+9", "UTC+9");
// 将时间转换到目标时区
var targetDateTime = date.ConvertTime(targetTimeZone);
// 按期望格式输出
string formattedResult = targetDateTime.ToString("yyyy/MM/dd hh:mm tt", CultureInfo.InvariantCulture);
// 输出结果:2023/07/22 04:00 AM

方案2:转换到系统本地时区(仅当本地时区为UTC+9时适用)

如果你的运行环境系统时区正好是UTC+9,可以直接用ConvertTimeToLocalTime():

var date = new DateTimeOffset(2023, 07, 21, 23, 00, 00, TimeSpan.FromHours(5));
var localDateTime = date.ConvertTimeToLocalTime();
string formattedResult = localDateTime.ToString("yyyy/MM/dd hh:mm tt", CultureInfo.InvariantCulture);

注意事项

你之前得到UTC时间21/07/2023 18:00 +00:00,是因为直接调用了date.UtcDateTime或使用了默认的UTC格式化逻辑,没有执行时区转换步骤。

内容的提问来源于stack exchange,提问作者L Pardo Cardona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:02:18