Javascript解析没有日期的时间

我需要在我的代码中解析和操作没有日期的时间。例如,我可能会从时间选择器中得到字符串“15:00”。我想将它变成某种时间对象 - 我通常使用具有不同日期,时间和日期时间对象的Python工作。Javascript解析没有日期的时间

但是我看到的所有解决方案都集中在使用Date对象。由于需要日期信息,因此无法解析像“15:00”这样的字符串。我不想将任意日期信息添加到时间 - 特别是因为日期似乎根据日期和区域设置对夏令时等进行了假设,并且似乎存在自动尝试将时间转换为给定语言环境。此外,我希望能够增加时间,例如“15:00 + 1小时”

解析和处理与日期无关的“原始”时间的建议解决方案是什么?

回答:

不幸的是,没有一个好的解决方案。 JavaScript只有一个Date对象,因为它真的是日期+时间,所以可能会错误地命名。你可能要考虑更深层次的

一两件事 - 你说你要只有上班时间,但你的意思是一个时间的日或你的意思的时候一个时间?这是两个相关的概念,但略有不同。

例如,你说你可能想要一个像“15:00 + 1小时”的操作。那么明显是16:00这两种方式。但是“15:00 + 10小时”呢?如果你谈论的是持续时间,那将是25:00,但如果你正在谈论时间,那么可能是01:00。

实际上,它可能是而不是是01:00,因为并非所有的日子都有24小时在其中。有些日子有23,23.5,24.5或25小时,这取决于什么时区以及DST是在当天开始还是停止。因此,在时间环境下,您可能需要在计算中包含特定的日期和区域。当然,如果你谈论的是24小时连续的日子,那么这一点是无关紧要的。

如果你正在谈论持续时间 - 你可能想再次看看moment.js,但不在moment对象。这里还有另一个对象,moment.duration。参考是here。

最后,您可能需要考虑仅使用普通javascript将时间字符串的小时和分钟解析为数字。根据需要操作数字,然后再输出一个字符串。但是,你的问题似乎是你正在寻找更多的管理。

回答:

我结束了,因为我已经在我的应用程序中使用moment使用以下物质:

var str = '15:16:33'; 

var d = new moment(str, 'HH:mm:ss');

你可以使用其他格式的字符串见Moment String+Format docs。

回答:

下面是12或24小时次moment.js解决方案:

moment('7:00 am', ['h:m a', 'H:m']); // Wed Dec 30 2015 07:00:00 GMT-0600 (CST) 

moment('17:00', ['h:m a', 'H:m']); // Wed Dec 30 2015 17:00:00 GMT-0600 (CST)

moment('17:00 am', ['h:m a', 'H:m']);// Wed Dec 30 2015 17:00:00 GMT-0600 (CST)

moment('17:00 pm', ['h:m a', 'H:m']);// Wed Dec 30 2015 17:00:00 GMT-0600 (CST)

http://momentjs.com/docs/#/parsing/string-formats/

回答:

我不得不为一个项目最近做,但真正地没有需要包括的时刻。JS,我采用的方法是手动分析的时候是这样的:

function parseTime(time) {  

let timeInt = parseInt(time);

let minutes = time.substring(3,5);

// you could then add or subtract time here as needed

if(time > '12:00') {

return `${timeInt - 12}:${minutes} PM`;

} else {

return `${timeInt}:${minutes} AM`;

}

}

使用此作为替代启动,如果你不想用的时刻。注意这个例子使用es6语法。

以上是 Javascript解析没有日期的时间 的全部内容, 来源链接: utcz.com/qa/267190.html

回到顶部