我希望能够在从字符串创建新日期时输入英国格式的日期,该日期适用于所有现代浏览器,但主要是FireFox和IE。
new Date('24/06/2014') // Gives 06/24/2014
因为我想使用它设置一个jquery datepicker。
是否可以获得
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
真正的问题是,当我使用datepicker时,我指定了英国日期格式,一切都很好......
$("#outOfStockFromDate").datepicker({
dateFormat: 'dd/mm/yy',
changeMonth: true,
numberOfMonths: 3,
onClose: function (selectedDate) {
$("#to").datepicker("option", "minDate", selectedDate);
}});
直到我尝试使用此类英国日期格式重新填充日期选择器...
$("#outOfStockFromDate").datepicker("setDate", testDate);
就像字符串' testDate'必须采用美国格式...... grrr
编辑:我意识到这个问题有两个部分,第一部分是关于datepicker的;这是我的愚蠢错误,我在尝试setDate的同时初始化它(这个错误导致我沿着Date()路线)。现在我初始化并正确更改它接受英国格式的日期!
第二部分是javascript中关于格式化日期的日期功能(现在我知道)是着名的缺乏......但是当我解决了我最初的问题时,我并不关心这个... P.S.我最终用美国日期格式(字符串)拆分和重建日期,然后使用新的日期(USDateFormattedString)....然后我意识到了!
总而言之,基本上我的代码在语法上是正确的,但是在它的执行中却没有。
感谢所有回答的人! 1
答案 0 :(得分:3)
您无法让new Date
直接接受带有英国格式日期的字符串,但是,您可以手动将其解析为I've shown in another question with similar issue:
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"
如果您想确保不会发生这种情况,可以添加一些验证。
答案 1 :(得分:1)
假设您正在使用jquery-ui,那么我相信您错过了对datepicker本地化的引用。例如:
$("#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">
<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 localization的文档。
一切顺利, ACG