如何在jQuery中执行新的Date()时设置正确的格式?

时间:2015-11-10 18:19:07

标签: javascript jquery

我的日期格式如下:

12/11/2015 07:12 PM

在jQuery中我正在做:

var parsedDate2 = new Date(date);
alert(parsedDate2);

这打印了我:

Fri Dec 11 2015 07:12:00 GMT+0100 (Central European Standard Time)

并且几乎正常,主要是因为在我的示例中(12/11/2015 07:12 PM),格式为DD/MM而不是MM/DD。但是,jQuery将它视为月份第一。这是一个问题,因为当我选择输入时:

19/11/2015 07:17 PM  <--- (19th of November)

我得到了:

Invalid date

那么如何在月份前一天设置正确的格式呢?

4 个答案:

答案 0 :(得分:1)

认为你应该使用更专业和更专注的库以及JQuery,对我来说最好的是Moment.js - 它具有日期时间解析和格式化所需的全部而且不需要其他的东西

此外,还有一些其他选择,例如date.jsglobalize.js

答案 1 :(得分:1)

丑陋,但只有JS才有效:

a = "12/11/2015  07:12 PM";
b = a.split(' ');
c = b[0].split('/');

bad = new Date(a);
alert('bad : '+bad);
good = new Date(c[1]+'/'+c[0]+'/'+c[2]+' '+b[1]+' '+b[2]);
alert('good : '+good);

另一种方法是使用Moment.js parsing tool

答案 2 :(得分:0)

它的形式为<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="jquery-2.0.2.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.js"></script> <script> var availableAttributes = [ "account_address", "account_address_city", "account_address_country", "account_address_state", "account_address_street1", "account_address_street2", "account_address_zip", "account_email", "account_login", "account_name", "account_number", "account_telephone"]; $(document).ready(function() { var max_fields = 10; //maximum input boxes allowed var wrapper = $(".input_fields_wrap"); //Fields wrapper var add_button = $(".add_field_button"); //Add button ID var x = 1; //initlal text box count $(add_button).click(function(e) { //on add input button click e.preventDefault(); if (x < max_fields) { //max input box allowed x++; //text box increment // $(wrapper).append('<div><input id="' + x + '" type="text" name="mytext"/><a href="#" class="remove_field">Remove</a></div>'); //add input box $(wrapper).append('<div>' + '<input id="' + x + '" type="text" name="mytext"><br>' + '<textarea name="desc[]"></textarea>' + '<a href="#" class="remove_field">Remove</a>' +'</div>'); $("input[id=" + x + "]").autocomplete({ source: availableAttributes }); } }); $(wrapper).on("click", ".remove_field", function(e) { //user click on remove text e.preventDefault(); $(this).parent('div').remove(); x--; }) }); // autocomplete enablement $(function() { $("input[name^='mytext']").autocomplete({ source: availableAttributes }); }); </script> </head> <body> <div class="input_fields_wrap"> <button class="add_field_button">Add More Fields</button> <div><input type="text" name="mytext[]"></div> <textarea name="desc[]"></textarea> </div> </body> </html> 。试试mm/dd/yyyy。遗憾的是,jQuery不知道你正在使用哪种格式,因此使用了聋人。

答案 3 :(得分:0)

不幸的是,在添加日期格式时,Javascript Date系统并不具有可塑性。 Here是Mozilla的参考。我认为wierdpanda有正确的想法,写一个接受你的日期格式的函数,在将它提供给new Date()之前重新格式化它,然后返回结果。用这个替代new Date()所在地,一切都应该好。