4
是否有內置的函數來計算一個月內的小時數? 它需要照顧日光(增加或減少一小時)。一個月中的小時,夏令時
是否有內置的函數來計算一個月內的小時數? 它需要照顧日光(增加或減少一小時)。一個月中的小時,夏令時
如果您在午夜並不總是有效的時間區不是,你可以做這樣的事情(道歉,如果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;