我的代码:
<input type="text" id="testdate" name="testdate" value="2017-01-01" />
<script>
$('#testdate').datepicker();
$('#testdate').datepicker('option', 'dateFormat', 'yy-mm-dd');
$("#testdate").datepicker('setDate', new Date('2017-01-01 12:00:00'));
</script>
JS小提琴:https://jsfiddle.net/g0uyok13/
在Google Chrome中,它会在文本输入区显示2017-01-01。在Firefox中它显示了今天的日期(atm 2016-02-24)。我希望它能像在谷歌浏览器中一样在Firefox中运行。
有什么想法吗?
答案 0 :(得分:2)
问题出在时间12:00:00
。别忘了它是你正在使用的日期选择器。时间与它无关。
现在它在chrome中工作的原因,我猜它是浏览器的内部实现。 Mozilla丢弃无效的日期格式,而chrome尝试并将其剪下来......(这纯粹是我的假设,我不以任何文档为基础......)
<强>更新强>
是的,我的假设是正确的。 Firefox不支持您输入的日期格式,而Chrome更灵活并且支持它。对于通用日期和时间,您可以使用以下代码:
$('#testdate').datepicker();
$('#testdate').datepicker('option', 'dateFormat', 'yy-mm-dd');
$("#testdate").datepicker('setDate', new Date('2017-01-01T12:00:00Z'));
(适用于两种浏览器)
您还可以查看new Date() works differently in Chrome and Firefox了解有关此内容的更多信息
答案 1 :(得分:1)
您可以尝试将日期字符串的格式更改为格式:
$("#testdate").datepicker('setDate', new Date('2017-01-01T12:00:00'));
Firefox不知道如何用空格解析日期
以下是MDN的摘录
dateString
表示日期的字符串值。字符串应该在一个 Date.parse()方法识别的格式(符合IETF的RFC 2822 时间戳以及ISO8601的版本。
您可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
查看更多信息答案 2 :(得分:0)
你的日期在firefox中无效...试试这个:
$('#testdate').datepicker();
$('#testdate').datepicker('option', 'dateFormat', 'yy-mm-dd');
$("#testdate").datepicker('setDate', new Date(2017, 00, 01, 12, 0, 0, 0));
注意:月份为0,所以0表示1月1日是2月等...
这应该适用于firefox和chrome。我从这个stackoverflow帖子中获取了日期格式:link
在firefox中试试这个:
console.log(new Date('2017-01-01 12:00:00'));
检查它应该显示的控制台:
无效日期