man*_*eur 44 javascript time datetime
我需要在代码中解析和操作没有日期的Times.例如,我可能从时间戳中得到字符串"15:00".我想把它变成某种类型的Time对象 - 我通常使用Python,它具有不同的Date,Time和Datetime对象.
但是,我看到的所有解决方案都专注于使用Date对象.这不能解析像"15:00"这样的字符串,因为它需要日期信息.我不想向Times添加任意日期信息 - 特别是因为Date似乎根据日期和区域设置对夏令时等事项做出假设,并且似乎存在自动尝试将时间转换为给定的区域设置.此外,我希望能够添加时间,例如"15:00 + 1小时"
解析和处理与日期无关的"原始"时间的推荐解决方案是什么?
Mic*_*ole 64
这是一个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)
Run Code Online (Sandbox Code Playgroud)
http://momentjs.com/docs/#/parsing/string-formats/
Min*_*ice 18
因为我已经moment
在我的应用程序中使用,所以我最终使用了以下内容:
var str = '15:16:33';
var d = new moment(str, 'HH:mm:ss');
Run Code Online (Sandbox Code Playgroud)
有关可以使用的其他格式字符串,请参阅Moment String + Format docs.
Mat*_*int 16
不幸的是,没有一个很好的解决方案.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
.参考在这里.
最后,您可能想要考虑使用普通的javascript来解析时间字符串中的小时和分钟数字.根据需要操作数字,然后再次输出一个字符串.但你的问题似乎是你在寻找更有管理的东西.
归档时间: |
|
查看次数: |
31362 次 |
最近记录: |