如何从Javascript中的HH:MM AM时间字符串中减去小时数?

Dan*_*cia 9 javascript time jquery date

从格式化为时间的字符串中减去几个小时的最佳方法是什么:

8:32 AM
Run Code Online (Sandbox Code Playgroud)

我考虑过将字符串拆分为冒号,但是当从凌晨1点减去3小时后,我得到凌晨2点而不是所需的10点PM.

Mar*_*c B 19

最可靠的方法是将其转换为JS日期对象,然后对此进行数学计算

var olddate = new Date(2011, 6, 15, 8, 32, 0, 0); // create a date of Jun 15/2011, 8:32:00am

var subbed = new Date(olddate - 3*60*60*1000); // subtract 3 hours

var newtime = subbed.getHours() + ':' + subbed.getMinutes(); 
Run Code Online (Sandbox Code Playgroud)

Date对象接受年/月/日/小时/分钟/秒/毫秒构造函数的自1970年1月1日起的unix样式时间戳(毫秒).


for*_*all 9

使用moment.js

moment("8:32 AM", 'h:mm A').subtract('hours', 2).format('h:mm A')
Run Code Online (Sandbox Code Playgroud)

  • 以防万一,如果有人希望结果采用 24 小时格式,则在“.format()”中使用“HH”(大写字母)而不是“h”或“hh”。我试过这个:“12am”的“moment("12am", 'hh:mm A').subtract('seconds', 1).format('HHmmss')”结果是“235959”。基本上 `.format()` 中的格式是您的选择,因为我的是 `HHmmss` :-) (2认同)