VB.NET中如何设置每月小时数及夏令时调整?
- 内容介绍
- 文章标签
- 相关推荐
本文共计329个文字,预计阅读时间需要2分钟。
是否有内置函数来计算一个月的小时数?需要考虑日光的增减(增加或减少一小时)。如果你不在午夜并且不是有效的有效时间,你可以这样做(例如,VB 语法中的时差调整,时区修正):Dim start=New
是否有内置函数来计算一个月的小时数?它需要它照顾日光(增加或减少一小时). 如果你不在午夜并不总是有效的时区,你可以做这样的事情(如果VB语法稍微偏离,则道歉):
Dim start = New DateTime(year, month, day, 0, 0, 0, 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, month, 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;
本文共计329个文字,预计阅读时间需要2分钟。
是否有内置函数来计算一个月的小时数?需要考虑日光的增减(增加或减少一小时)。如果你不在午夜并且不是有效的有效时间,你可以这样做(例如,VB 语法中的时差调整,时区修正):Dim start=New
是否有内置函数来计算一个月的小时数?它需要它照顾日光(增加或减少一小时). 如果你不在午夜并不总是有效的时区,你可以做这样的事情(如果VB语法稍微偏离,则道歉):
Dim start = New DateTime(year, month, day, 0, 0, 0, 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, month, 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;

