在 momentjs 中将分钟添加到日期时间

新手上路,请多包涵

我需要将变量 secondsToMinutes 添加到 startdate

secondsToMinutes 是“3:20” startDate =“2:00 PM” endDate 应该等于“2:20 PM”.03:03我尝试了多种方法,但每次都出现错误。

    var startdate = data.StartTime;
   startdate = moment(startdate).format('LTS');

   var secondsToMinutes = readableDuration(self.runlength());//='3:20';

   var seconds = secondsToMinutes.split(':')[1];
   var minutes = secondsToMinutes.split(':')[0];

   var date = moment(startdate)
        .add(seconds, 'seconds')
        .add(minutes, 'minutes')
        .format('LTS');

日期显示为无效日期。

原文由 CsharpBeginner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 741
2 个回答

moment().format("LTS") 返回一个字符串值 hh:mm:ss AM/PM 格式。当您使用非标准格式的字符串创建矩对象时,您应该将输入格式作为第二个参数传递给矩构造函数。

例如: Jan 1, 2017 在字符串中 01012017 不是标准表示。但是如果你需要一个 moment 对象,使用 moment("01012017") 将在格式化时给出“无效日期”响应。相反,使用 moment("01012017","DDMMYYYY")

 var d = moment("01012017")
d.toISOString() => "Invalid date"

var d = moment("01012017", "DDMMYYYY")
d.toISOString() => "2016-12-31T18:30:00.000Z"

在您的代码中,当创建“日期”变量时,将“hh:mm:ss A”作为第二个参数传递给 moment 构造函数,如下所述。

    var date = moment(startdate, "hh:mm:ss A")
        .add(seconds, 'seconds')
        .add(minutes, 'minutes')
        .format('LTS');

原文由 Muralidharan 发布,翻译遵循 CC BY-SA 4.0 许可协议

Moment 有很好的文档。我会检查一下:http: //momentjs.com/docs/

但要更直接地解决您的问题,您 可以 执行以下操作:

 var secondsToMinutes = '3:20';
var seconds = secondsToMinutes.split(':')[1];
var minutes = secondsToMinutes.split(':')[0];

var momentInTime = moment(...)
                   .add(seconds,'seconds')
                   .add(minutes,'minutes')
                   .format('LT');

您应该尽最大努力使用实际的处理程序。现在,您可以使用持续时间做一些很酷的事情,但这更简洁。

编辑:

正如另一个答案中提到的:

  moment('2:00:00 PM', 'h:mm:ss A')

如果您正在处理 格式,则这是必需的。无论如何 - 向 moment 对象添加/减去分钟/小时是微不足道的。将无效字符串传递给 moment 对象本身就是一个不同的问题。 ;)

原文由 The Dembinski 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题