Jquery Date.parse正在返回NaN

时间:2016-05-25 19:55:15

标签: javascript jquery datetime datetime-format

我尝试使用Jquery从输入类型= datetime-local解析值。我知道为什么,但当我告诉它解析一个变量时它会给我一个NaN。

$_GET['count']

我的输出是

  

123213-03-12T12:12

     

的NaN

有什么问题?

2)我的期望输出是 的 YYYYMMDDHHMMSS

我怎么能有这个?

3 个答案:

答案 0 :(得分:4)

这可能是因为123213-03-12T12:12不是有效的日期格式。如果Date.parse()无法识别日期字符串或者日期无效,NaN将返回NaN。在您的情况下,它似乎是无效的日期格式。

这是excerpt from the docs

  

... List<String> exeParallel(int start, int end){ List<String> people = new ArrayList<String>(); byte maxthreads; int cores = Runtime.getRuntime().availableProcessors(); maxthreads = (byte) ((cores > 2)?cores-1:1); ExecutorService executor = Executors.newFixedThreadPool(maxthreads); for(Long i= start; i <= end; i++ ){ Callable<ServiceResponse> callTask = getTask(i); Future<ServiceResponse> future = executor.submit(callTask); if(future != null){ String result = .....; people.add(result); } } private Callable<ServiceResponse> getTask(int num){ return new Callable<ServiceResponse>(){ @Override public ServiceResponsecall() throws Exception { ServiceRestClient serviceRestClient =ServiceRestClient.getInstance(); return serviceRestClient.callservice(num); } }; } 如果字符串无法识别,或者在某些情况下包含非法日期值(例如2015-02-31)。< / p>

答案 1 :(得分:2)

在您的情况下,给定日期无效。

如果您想要输出,请回答您的问题:yyyymmddhhmmss

您必须使用dateFormat

使用dateFormat的示例代码:

var a = $(this).val();
var dateFormat = require('dateformat');
var yourdate = new Date(a);
dateFormat(yourdate, "yyyy mm dd hh:mm:ss");

另一种可能的方法是使用moment.js这是一个完整的库,可以格式化日期并用它们做很多事情。你可以看看他们的文档,它是完全详细的。

修改

如果使用图书馆真的困扰你,那么你可以在没有图书馆的情况下做到这一点。 (脏但有效...)

 var str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " +  date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();

答案 2 :(得分:1)

你不应该使用Date.parse。来自MDN

  

在ES5之前不建议使用Date.parse,解析字符串完全取决于实现。不同主机解析日期字符串的方式仍然存在很多差异,因此应该手动解析日期字符串(如果要容纳许多不同的格式,库可以提供帮助)。

在您的情况下,它会返回NaN,因为它超出范围 - 年份为123213

我建议你改用Moment.js库。