【问题标题】:Parse a date return null解析日期返回 null
【发布时间】:2016-02-12 22:42:54
【问题描述】:

我正在尝试解析日期,尤其是这个:

2015 年 11 月 11 日上午 00:00:00

进入这个:

2015 年 11 月 11 日上午 9:00:00

所以我做了这个代码:

var workDateStart = Date.parseExact(calendarDateStart.toString('dd/MM/yyyy') + ' '+ workingPlan[selDayName].start,'dd/MM/yyyy HH:mm');

问题在于这段代码返回了一个null 值。

更多细节变量值化

workingPlan[selDayName].start => 09:00

calendarDateStart => Mer Nov 11 2015 00:00:00
  1. workingPlan 变量包含我的所有工作计划天数 供应商,我通过传递获得特定日期(工作开始) selDayName 作为索引。
  2. calendarDateStart 包含日历的实际日期。

【问题讨论】:

  • Date.parseExact - 那是什么 API?它不是 moment.js,也不是 JavaScript 内置的 Date 对象。也许您打算标记 datejs 而不是 momentjs
  • 这是一种Javascript Date的方法,无论如何,如果你提出一个解决方案,我可以看到任何解决方案。
  • 不,抱歉 - 不是。您可以查看 Date 对象的 API on MDN here。我认为您正在使用 date.js,但您没有以这种方式标记您的问题。您确实标记了 moment.js,但您的问题中没有使用它。顺便说一句 - toString 也不接受参数。

标签: javascript date time timezone momentjs


【解决方案1】:

这有点笨拙,但如果您想使用纯 JavaScript(无库)执行此操作,以下应该可以工作。

var workDateStart = new Date(calendarDateStart.toDateString() + ' ' + workingPlan[selDayName].start);

这假定calendarDateStartworkDateStart 都是Date 对象(不是字符串),并且workingPlan[selDayName].start 确实是您提供的格式的字符串。

作为一个孤立的例子:

var d = new Date();                            // some date object
var timeString = '09:00';                      // some time-only string
var s = d.toDateString() + ' ' + timeString;   // combined
var result = new Date(s);                      // parsed back to a Date object

如果您想使用moment.js 执行此操作,则如下所示:

var m = moment();                              // some moment object
var timeString = '09:00';                      // some time-only string
var s = m.format('YYYY-MM-DD') + ' ' + timeString;   // combined
var result = moment(s, 'YYYY-MM-DD HH:mm');    // parsed back to a moment object 

有一个open issue 将来会为moment的API添加更明智的功能。

【讨论】:

猜你喜欢
  • 2019-02-18
  • 1970-01-01
  • 2014-07-24
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多