【问题标题】:Subtracting hours from date string从日期字符串中减去小时数
【发布时间】:2017-04-10 11:56:54
【问题描述】:

我在节点 js 中工作,通过使用时刻时区 package 我生成了一个日期:

2017-4-10 19:04:47

下面是我用来生成这个日期时间的代码,它适用于亚洲/上海时区:

var momentTimezone = require('moment-timezone');
console.log(momentTimezone(new Date()).tz('Asia/shanghai').format('Y-M-D HH:MM:ss'));

现在我想从这个时间中减去几个小时来生成另一个日期。我想减去 9940 小时。

我已经搜索了很多小时,但找不到确切的解决方案。

下面是我必须复制的python代码:

 end_time = datetime.now(g.china) 
 //g.china =   timezone("Asia/Shanghai")
 begin_time = end_time - timedelta(hours=9940)

对此的任何指导将不胜感激。

谢谢!

【问题讨论】:

  • 将两者都转换为毫秒减法,然后读取新日期,这将从当前日期减去 24 小时 "new Date(Date.parse(new Date()) - (24*60*60*1000 ));"
  • moment.js 的文档(它们在客户端/服务器端都相同)告诉如何减去 9940 小时(这很多......)Moment.js docs - Subtract。检查“添加”表中的正确键。
  • 在 Moment 网站的首页我可以看到类似moment().subtract(10, 'days') 的内容:-?
  • @KarelG 时刻接受时区吗?因为我想有上海时间,即 CST。
  • @Simer moment 为此使用了一个插件:moment timezone,它读取/转换时区。

标签: javascript node.js datetime momentjs


【解决方案1】:

你可以简单地使用 momentsubtract 方法。

这是一个工作示例:

// Current time in Shanghai
var m = moment.tz('Asia/Shanghai');
console.log(m.format('Y-M-D HH:mm:ss'));
// Subtract 9940 hours
console.log(m.subtract(9940, 'hours').format('Y-M-D HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.7/moment-timezone-with-data-2010-2020.min.js"></script>

请注意,您应该使用小写的mm 来显示分钟,因为大写的MM 代表月份。请参阅format 令牌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2022-01-01
    • 1970-01-01
    • 2012-10-28
    • 2015-05-13
    相关资源
    最近更新 更多