139

我将在 Chrome中的 datepicker 输入类型日期中设置今天的日期。

$(document).ready(function() {
    let now = new Date();
    let today = now.getDate()  + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    console.log(today);
    $('#datePicker').val(today);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="datePicker" type="date">

但是,它不起作用。

请尝试 Chrome 中的代码片段。

4

13 回答 13

194

小提琴链接: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);
于 2012-09-10T07:28:20.083 回答
155

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

应该管用。

于 2012-11-10T14:30:13.177 回答
29

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

于 2016-07-18T12:56:34.773 回答
28
var today = new Date().toISOString().split('T')[0];
$("#datePicker").val(today);

上面的代码将起作用。

于 2018-10-14T12:17:24.420 回答
17

对我来说,解决这个问题的最短方法是使用 moment.js 并在 2 行中解决这个问题。

var today = moment().format('YYYY-MM-DD');
$('#datePicker').val(today);
于 2015-06-11T18:27:45.020 回答
6

如果它采用这种格式,您的代码会起作用:YYYY-MM-DD,这是日期格式的计算机标准http://en.wikipedia.org/wiki/ISO_8601

于 2014-03-05T14:52:51.280 回答
3

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

// 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())
于 2017-03-14T20:03:15.003 回答
3

您只能在输入type="date"中使用日期格式YYYY-MM-DD

我已经formatDate在 NODE.js express-handlebars 中实现了 helper,不用担心......只需使用第一行中描述的格式。

例如:

< input type="date" id="date" name="date" class="form-control" value="{{formatDate invoice.date 'YYYY-MM-DD'}}" />
于 2020-08-22T22:58:02.137 回答
1

对我来说,获取语言环境日期和正确输入格式的最短方法type="date"是:

var d = new Date(); 
var today = d.getFullYear()+"-"+("0"+(d.getMonth()+1)).slice(-2)+"-"+("0"+d.getDate()).slice(-2);

或这个 :

var d = new Date().toLocaleDateString().split('/');
var today = d[2]+"-"+("0"+d[0]).slice(-2)+"-"+("0"+d[1]).slice(-2);

然后只需设置日期输入值:

$('#datePicker').val(today);
于 2020-08-30T23:33:47.340 回答
1

2021

我发现这样做的一个好方法是使用语言环境进行格式化。您可以通过许多不同的方式使用它。这适用于您不使用 jquery datepicker,而是使用 html datepicker 时。

  $("#datepickerEnd").val(new Date().toLocaleDateString('en-CA'));//YYYY-MM-dd

或拆分用于操作或调整或其他用途。

let theDate = new Date();
  $("#datepickerEnd").val(theDate.toLocaleDateString('en-CA'));//YYYY-MM-dd

操纵示例。

  theDate.setDate(theDate.getDate()-7);
  $("#datepickerStart").val(theDate.toLocaleDateString('en-CA'));//YYYY-MM-dd

'en-ca' 是我的日期选择器所需的格式。如果您的不同,您可以查找匹配的字符串格式。由于它将其转换为字符串,因此它不包含用于弄乱每个区域的额外信息。因此,通过这种方式,您可以将其用于纯粹的格式化。

了解更多信息

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

于 2021-10-15T16:48:03.793 回答
0

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

于 2018-01-27T12:31:58.520 回答
0

试试这个,

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

注意:您需要添加 Moment.js 作为依赖项

于 2021-08-19T10:24:44.820 回答
-5

jQuery版本

var currentdate = new Date();

$('#DatePickerInputID').val($.datepicker.formatDate('dd-M-y', currentdate));
于 2016-12-09T10:53:26.673 回答