加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – 每月小时,夏令时

发布时间:2020-12-17 07:13:32 所属栏目:百科 来源:网络整理
导读:是否有内置函数来计算一个月的小时数? 它需要它照顾日光(增加或减少一小时). 解决方法 如果你不在午夜并不总是有效的时区,你可以做这样的事情(如果VB语法稍微偏离,则道歉): Dim start = New DateTime(year,month,day,DateTimeKind.Local)Dim end = start.A
是否有内置函数来计算一个月的小时数?
它需要它照顾日光(增加或减少一小时).

解决方法

如果你不在午夜并不总是有效的时区,你可以做这样的事情(如果VB语法稍微偏离,则道歉):

Dim start = New DateTime(year,month,day,DateTimeKind.Local)
Dim end = start.AddMonths(1)
Dim length = end.ToUniversalTime() - start.ToUniversalTime()
Dim hours = length.TotalHours

如果你像巴西那样在当地时间午夜发生DST转换,这就有可能出现问题.请注意,以上都是假设您要使用系统本地时区.

使用Noda Time,您可以创建适当的LocalDate值,然后转换为ZonedDateTime at the start of the relevant day,并以这种方式计算出差异,没有任何歧义. C#示例:

var zone = ... // Whatever DateTimeZone you want...
var start = new LocalDate(year,day);
var end = start.PlusMonths(1);
var startInstant = zone.AtStartOfDay(start).ToInstant();
var endInstant = zone.AtStartOfDay(end).ToInstant();
var duration = endInstant - startInstant;
var hours = duration.Ticks / NodaConstants.TicksPerHour;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读