在输入类型日期中设置日期


104
<input id="datePicker" type="date" />​

我将在chrome 中的日期选择器输入类型日期中设置今天的日期。

$(document).ready( function() {
    var now = new Date();
    var today = now.getDate()  + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    alert(today);
    $('#datePicker').val(today);
});​

但它不起作用

编辑此jsFiddle-请尝试使用chrome。


2
如果要挑你的小提琴日期和检查结果框架,做一个$('#datePicker').val();"2012-09-10"这不是您使用用于设置日期的格式

它对我有好处。.你到底是什么意思its not working
AdityaParab 2012年

试试:{ currentText: "Now" },请参见手册
diEcho 2012年

正在为我工​​作...是什么问题?
Netorica

1
@JigarPandya fr_FR时(@ user108,也参见stackoverflow.com/a/3496622/180100

Answers:


158

小提琴链接:http : //jsfiddle.net/7LXPq/93/

这有两个问题:

  1. HTML 5中的日期控件接受SQL中使用的年-月-日格式
  2. 如果月份为9,则只需将其设置为09而不是9。因此,它也适用于日字段。

请点击小提琴链接进行演示:

var now = new Date();

var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);

var today = now.getFullYear()+"-"+(month)+"-"+(day) ;

$('#datePicker').val(today);

4
2012年后答案:在一行代码中检查我的答案以找到受支持的解决方案。
Oliv Utilo

@OlivUtilo-当然可以,但是您的答案有时会给出不正确的结果。
RobG

您节省了我的时间,非常感谢
Dip Surani

128

document.getElementById("datePicker").valueAsDate = new Date()

应该管用。


6
这是迄今为止我发现的最好的解决方案-可在Android 4.0.3上使用
Ben Clayton

6
绝对比接受的答案更干净...谢谢
Skipjack

1
我发现由于某些原因,这在Safari中不起作用:(
james_alvarez

在Chrome和Edge中进行了测试,发现工作正常。正如@Skipjack所说,真棒答案!
阿伦

看起来像是正确的解决方案,但是在Safari(13.1.2)中,调用使您收到无效状态异常。不知道为什么...?
fbitterlich

23

更新:我正在使用date.toISOString().substr(0, 10)。给出与接受答案相同的结果,并具有良好的支持。


2
在野生动物园工作
james_alvarez 17-10-11

4
注意:这给出了UTC时区的日期。相反,最高答案使用本地时间。
Qwertie

@Qwertie-它们都在同一个Date对象上操作(使用新的Date或Date.now创建,它们从浏览器继承时区)。使用toISOString或getDate函数将(我认为)解决相同问题;所以我认为这应该具有理想的行为...
Oliv Utilo

1
@OlivUtilo-不,在主机的时区偏移量内,它们不会。
RobG

正如Qwertie所说,如果您使用没有时间的日期,这可能会给出错误的答案。例如:Sat Sep 01 2018 00:00:00 GMT + 0100转换为“ 2018-08-31”
havlock '19


12

对我来说,解决此问题的最快捷方法是使用moment.js并仅用2行代码即可解决此问题。

var today = moment().format('YYYY-MM-DD');
$('#datePicker').val(today);

1
是的就像$('#datePicker')。val(moment()。format('YYYY-MM-DD'));
Umair Khalid

2
对于不熟悉Moment的人,如果您想使用moment()格式化任意的Javascript Date对象: var yourFormattedDate= moment(yourDate).format('YYYY-MM-DD'); $('#datePicker').val(yourFormattedDate);
veuncent


1

我通常在使用日期输入时创建以下两个辅助函数:

// date is expected to be a date object (e.g., new Date())
const dateToInput = date =>
  `${date.getFullYear()
  }-${('0' + (date.getMonth() + 1)).slice(-2)
  }-${('0' + date.getDate()).slice(-2)
  }`;

// str is expected in yyyy-mm-dd format (e.g., "2017-03-14")
const inputToDate = str => new Date(str.split('-'));

然后可以将日期输入值设置为:

$('#datePicker').val(dateToInput(new Date()));

然后像这样检索选定的值

const dateVal = inputToDate($('#datePicker').val())

0

Datetimepicker始终需要输入格式YYYY-MM-DD,它并不关心模型的显示格式,也不关心您的本地系统日期时间。但是日期时间选择器的输出格式是您想要的(您的本地系统)。我的帖子中有一个简单的例子。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.