php timespan 用法,夏令时间如何使用TimeZoneInfo获取当地时间?

我是一个.NET和stackoverflow的初学者,所以我可能是错的,但这里是:

使用TimeZoneInfo.ConvertTimeFromUtc将允许夏令时,并根据时区+可能的DST偏移量转换为正确的时间。 但是 – 结果对象中的偏移本身将显示标准时间的偏移量,而不考虑夏令时。 所以,如果你想在对象上做一个ToString,你将最终得到正确的时间(以小时和分钟为单位),但是在夏令时期间错误的偏移,这可能导致代码后面错误的时间。

如果使用GetUtcOffset获取特定时间的偏移量,然后在DateTimeOffset对象上执行ToOffset,则小时/分钟和偏移量本身都将正确转换,并且可以安全地执行ToString。

string ExpectedDateTimePattern = "yyyy'-'MM'-'dd'T'HH':'mm':'ss''zzz"; string timeZoneId = "FLE Standard Time"; string dateTimestr = "2017-10-09T09:00:00+02:00"; DateTimeOffset dto = DateTimeOffset.Parse(dateTimeStr); TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); TimeSpan offset = zone.GetUtcOffset(dto); dto = dto.ToOffset(offset); string localTime = dto.ToString(ExpectedDateTimePattern);

localTime将返回“2017-10-09T10:00:00 + 03:00”。

datetimeoffset timezoneinfo getutcoffset

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值