我需要在代码中解析和操作没有日期的Times。例如,我可能从时间戳中得到字符串“15:00”。我想把它变成某种Time对象 - 我通常在Python中工作,它有不同的Date,Time和Datetime对象。
然而,我见过的所有解决方案都专注于使用Date对象。这不能解析像“15:00”这样的字符串,因为它需要日期信息。我不想向Times添加任意日期信息 - 特别是因为Date似乎根据日期和区域设置对夏令时等事项做出假设,并且似乎存在自动尝试将时间转换为给定的区域设置。此外,我希望能够添加时间,例如“15:00 + 1小时”
解析和处理与日期无关的“原始”时间的推荐解决方案是什么?
答案 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)
答案 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