如何通过jQuery在datetime-local上设置日期时间

hpxqektj  于 2023-01-01  发布在  jQuery
关注(0)|答案(9)|浏览(152)

我的表单上有一个本地日期时间的html控件,我需要通过JS或jQuery动态地设置日期和时间,我该怎么做?

<input type="datetime-local" id="publishDate" required/>

我试过了

$("#publishDate").val("2013-3-18 13:00");
$("#publishDate").val("2013-3-18T13:00");
$("#publishDate").val(new Date().toLocalString());

但都没用。

piok6c0g

piok6c0g1#

这就行了

$("#publishDate").val("2013-03-18T13:00");

您需要使用2位数的月份才能使您的示例工作。

2jcobegt

2jcobegt2#

如果要设置当前日期,则可以尝试以下操作:

__Method 1:__

$(document).ready(function(){
    $('input[type=datetime-local]').val(new Date().toJSON().slice(0,19));
});

__Method 2:__

function zeroPadded(val) {
  if (val >= 10)
    return val;
  else
    return '0' + val;
}

$(document).ready(function(){
  d = new Date();
  $('input[type=datetime-local]').val(d.getFullYear()+"-"+zeroPadded(d.getMonth() + 1)+"-"+zeroPadded(d.getDate())+"T"+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
});

***注意:***您可以将$('input [type=datetime-local]')替换为本地日期时间字段的IdNameClass

EDIT:d.getMonth()返回一个0-11之间的值,因此要输入正确的月份,需要在结果中加上1。

ebdffaop

ebdffaop3#

关于什么的?

var now=new Date();
console.log(new Date(now.getTime()-now.getTimezoneOffset()*60000).toISOString().substring(0,19));
pepwfjgg

pepwfjgg4#

我写了一个jQuery method that sets the current UTC time,它对初始化datetimedatetime-local输入字段很有用。
下面是如何使用它来初始化字段。

$('input[type="datetime"]').setNow();

或者传递参数true以仅设置没有值的字段。

$('input[type="datetime"]').setNow(true);
ws51t4hk

ws51t4hk5#

这里有一个使用momentjs格式化日期的解决方案。
这将获取当前日期和时间

moment().format('YYYY-MM-DDThh:mm:ss.SSS')
mw3dktmi

mw3dktmi6#

这里有一个更简单的方法。

const now = (new Date().toLocaleString("sv-SE") + '').replace(' ','T');
console.log(now);
eni9jsuy

eni9jsuy7#

这个组件是混乱的,因为它还没有被正确地指定。实现也可能是古怪的。
正确的方法应该是传递一个日期对象,对于JS和DOM来说,没有这个对象是没有意义的。使用字符串操作会调用Zalgo。迟早它会与语言环境或时区脱节。
我一直在寻找这样的东西,并在Chrome 46发现:

$('input[type=datetime-local]').prop('valueAsNumber', Math.floor(new Date() / 60000) * 60000); // 60seconds * 1000milliseconds

如果不删除秒和毫秒,它们将显示在输入字段中。
还有一个valueAsDate属性,但很神秘:

Uncaught DOMException: Failed to set the 'valueAsDate' property on 'HTMLInputElement': This input element does not support Date values.

所以他们还没有完成它的实现,或者为该属性选择了一个错误的名称(即使设置了一些内容,它也显示为null)。

xuo3flqw

xuo3flqw8#

对于那些日期为字符串格式且中间有"T"字符的用户,
将10个字符(空格)替换为T
代码如下:

function setCharAt(str,index,chr) {
    if(index > str.length-1) return str;
    return str.substring(0,index) + chr + str.substring(index+1);
}
var variable=setCharAt("2022-02-26 16:32",10,"T");
$("#publishDate").val(variable);
    • 但请记住,格式必须为"YYYY-MM-DDThh:mm:ss"**

OP错误地提供了日期"2013年3月18日13:00"
其中月份应为"03"

ecr0jaav

ecr0jaav9#

使用矩,可以执行以下操作。
1.如果要使用当前日期。
$(“#发布日期”).瓦尔(时刻().格式(“年-月-日:月”));
1.如果您有指定的日期。
$(“#发布日期”).瓦尔(时刻(您的日期).格式('YYYY-MM-DDTHH:MM'));

相关问题