如何从datetime获取24:XX时间?



是否有一个DateTime格式,允许24小时时钟的表示滚动,其中24:XX是有效时间?

例如

const secondsToTimeOfDay = (totalSeconds: number): string => {
return new Date(totalSeconds * 1000).toISOString().substr(11, 8);
};
var x = secondsToTimeOfDay(86399)
console.log(x)

返回
23:59:59

但是当秒数大于86400(一天中的秒数)时,它从第二天开始?

例子
var x = secondsToTimeOfDay(87000)
console.log(x)

返回
00:10:00

是否有日期格式它将以24:xx格式返回?

示例(我知道这是有效的,但我想知道它是否可以使用某种内置日期对象)

const SomeNewFunction = (totalSeconds: number): string => {
var duration = 1000*totalSeconds
var milliseconds = parseInt((duration % 1000) / 100),
seconds = Math.floor((duration / 1000) % 60),
minutes = Math.floor((duration / (1000 * 60)) % 60),
hours = Math.floor((duration / (1000 * 60 * 60)));
hours = (hours < 10) ? "0" + hours : hours;
minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;
return hours + ":" + minutes + ":" + seconds;
}    
var x = SomeNewFunction(87000)
var y = SomeNewFunction(97000)
console.log(x)
console.log(y)

返回
24:10:00
26:56:40

其中somenewfunction使用了某种DateTimeObject而不是数学?

JavaScriptDate对象表示世界历史上的一个瞬间,包括日期和时间。虽然您可以忽略显示中的日期部分,但它始终存在-new Date(300000)不代表任何一天的00:05:00,它代表1970年1月1日的00:05:00,根据UTC"。

由于1970年1月1日没有第25和第26小时,所以您要求的格式没有意义。换一种说法,&;Feb 2 02:00&;和"2月1日26:00";在时间上是相同的,但是(如果我对你的问题理解正确的话)你希望能够清楚地表示它们。

有与时间相关的对象,其中"第26小时";有意义:

  • "持续时间",表示绝对时间量,与发生时间无关。
  • 一个"间隔",表示两个特定瞬间之间的时间跨度。
  • "一天中的时间",在某些特殊情况下,您需要考虑"天";的持续时间超过24小时。

JavaScript目前还没有内置这些功能,尽管有一些库提供了这些功能,并且有一个建议可以本地添加它们。

很可能"一天中的大部分时间"实现将不允许一天中超过24小时,但是您可以使用"持续时间"来表示它。或";interval"。最终结果可能如下所示:

var timetableEntry = {
"date": Temporal.PlainDate.from({year: 2006, month: 8, day: 24}),
"startOffsetFromMidnight": Temporal.Duration.from({ hours: 23, minutes: 30 }),
"endOffsetFromMidnight": Temporal.Duration.from({ hours: 26, minutes: 30 })
}
var journeyDuration = timetableEntry.endOffsetFromMidnight.subtract( timetableEntry.startOffsetFromMidnight );
var startDateTime = timetableEntry.date.add( timetableEntry.startOffsetFromMidnight );
var endDateTime = timetableEntry.date.add( timetableEntry.endOffsetFromMidnight);

最新更新