Javascript解析没有日期的时间

时间:2013-07-26 14:51:57

标签: javascript datetime time

我需要在代码中解析和操作没有日期的Times。例如,我可能从时间戳中得到字符串“15:00”。我想把它变成某种Time对象 - 我通常在Python中工作,它有不同的Date,Time和Datetime对象。

然而,我见过的所有解决方案都专注于使用Date对象。这不能解析像“15:00”这样的字符串,因为它需要日期信息。我不想向Times添加任意日期信息 - 特别是因为Date似乎根据日期和区域设置对夏令时等事项做出假设,并且似乎存在自动尝试将时间转换为给定的区域设置。此外,我希望能够添加时间,例如“15:00 + 1小时”

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

4 个答案:

答案 0 :(得分:59)

这里是一个片刻。解决方案12或24小时:

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/

答案 1 :(得分:17)

我最终使用了以下内容,因为我已在我的应用中使用moment

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

有关您可以使用的其他格式字符串,请参阅Moment String+Format docs

答案 2 :(得分:1)

我最近不得不为一个项目做这个但是并不需要包含moment.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语法。

答案 3 :(得分:0)

好的,所以我知道我参加聚会很晚。大概晚了6年,但这是我需要弄清楚的东西,并将其格式化为HH:mm:ss(24小时)。

moment().format(moment.HTML5_FMT.TIME_SECONDS); // 17:44:56

您还可以传入2019-11-08T17:44:56.144之类的参数。

moment('2019-11-08T17:44:56.144').format(moment.HTML5_FMT.TIME_SECONDS); // 17:44:56

https://momentjs.com/docs/#/parsing/special-formats/