使用包含英国格式日期的字符串设置new Date()

Set new Date() with a string containing a date in UK format

本文关键字:new 设置 Date 字符串 包含 英国 格式 日期      更新时间:2023-09-26

我希望在从字符串创建新的date时能够输入英国格式的日期,这将在所有现代浏览器中工作,但主要是FireFox和IE。

new Date('24/06/2014') // Gives 06/24/2014

因为我想用它来设置一个jquery日期拾取器

有可能得到

new Date()

解释作为字符串传递的英国日期?

new Date('24/06/2014').toLocaleString("en-GB") // Gives 06/12/2015
new Date('06/24/2014').toLocaleString("en-GB") // Gives 24/06/2014

真正的问题是当我使用日期选择器时,我指定英国日期格式,一切都很好…

$("#outOfStockFromDate").datepicker({
    dateFormat: 'dd/mm/yy',
changeMonth: true,
numberOfMonths: 3,
onClose: function (selectedDate) {
    $("#to").datepicker("option", "minDate", selectedDate);
}});

直到我尝试使用英国日期格式重新填充日期选择器,使用诸如…

$("#outOfStockFromDate").datepicker("setDate", testDate);

就好像字符串'testDate'必须是美国格式…叽阿

EDIT:我意识到这个问题有两个部分,第一部分处理日期拾取器;这是我愚蠢的错误,我在初始化它的同时,我试图setDate(这个错误导致我沿着Date()路线)。现在我已经将其初始化并正确更改,它接受英国格式日期!

第二部分是的,javascript中关于格式化日期的日期功能(现在我知道)是出了名的缺乏…但既然我已经解决了最初的问题,我就不关心这个了……P.S.我最终在美国日期格式(字符串)中分割和重建日期,然后使用新的日期(USDateFormattedString)....然后我意识到!

最后,基本上我的代码在语法上是正确的,但在执行时却不是。

感谢所有回答的人!+ 1

您不能让new Date直接接受英国格式的日期字符串,但是,您可以手动解析它,正如我在另一个类似问题中所示:

function parseDMY(value) {
    var date = value.split("/");
    var d = parseInt(date[0], 10),
        m = parseInt(date[1], 10),
        y = parseInt(date[2], 10);
    return new Date(y, m - 1, d);
}

这个版本接受这样的日期:

parseDMY("01/13/2014").toLocaleString("en-GB")
"1/1/2015 00:00:00"

如果你想确保不会发生这种情况,你可以添加一些验证

假设您正在使用jquery-ui,那么我相信您错过了对日期选择器本地化的引用。例如:

$("#datepicker").datepicker( "option",$.datepicker.regional[ "en-GB" ] );

下面是一个完整的例子:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Datepicker - Localize calendar</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
</head>
<body>
<p>Date: <input type="text" id="datepicker">&nbsp;
<button id="set">Test Set Date</button>
<button id="get">Test Get Date</button>
</body>
<script>
  $(function() {
  $( "#datepicker" ).datepicker({ dateFormat: "dd/mm/yy" });
  $( "#datepicker" ).datepicker( "option",
  $.datepicker.regional[ "en-GB" ] );
  $("#set").click(function(){
    $("#datepicker").datepicker("setDate", new Date());
  });
  $("#get").click(function(){
    alert($("#datepicker").datepicker("getDate"));
  });
});
</script>
</html>

这是jQuery UI本地化的文档

祝你一切顺利。acg