如何通过jQuery设置datetime-local上的日期时间
How to set datetime on datetime-local via jQuery
我有datetime-local 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());
这就行了
$("#publishDate").val("2013-03-18T13:00");
您需要使用2个数字的月份,使您的示例工作
如果您想设置当前日期,那么您可以尝试:
__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]')替换为datetime-local字段的Id
或Name
或Class
。
EDIT: d.getMonth()返回0-11之间的值,因此要输入正确的月份,需要在结果中添加1。
为什么?
var now=new Date();
console.log(new Date(now.getTime()-now.getTimezoneOffset()*60000).toISOString().substring(0,19));
我编写了一个jQuery方法来设置当前的UTC时间。对于初始化datetime
和datetime-local
输入字段非常有用。
下面是你如何使用它来初始化一个字段:
$('input[type="datetime"]').setNow();
或者传递一个参数true
,只设置没有值的字段。
$('input[type="datetime"]').setNow(true);
这是一个使用momentjs格式化日期的解决方案。
这将获得当前日期和时间
moment().format('YYYY-MM-DDThh:mm:ss.SSS')
这里有一个更简单的方法。
const now = (new Date().toLocaleString("sv-SE") + '').replace(' ','T');
console.log(now);
这个组件搞砸了,因为它还没有被正确指定。实现也可能很古怪。
正确的方法应该是传递一个日期对象,在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)。
使用带有"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-18t13:00";
其中月份应该是"03"
使用moment,您可以执行以下操作:
-
如果您想使用当前日期。
$("# publishDate" .val(时刻().format (YYYY-MM-DDTHH: MM));
-
如果您有一个指定的日期。
$("# publishDate" .val(时刻(你).format (YYYY-MM-DDTHH: MM));
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- 使用时刻.js从日期时间中提取时间
- 两个日期时间选择器
- Javascript:如何在onChange事件期间更改日期时间值
- .Net webApi ISO日期时间和IE8
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- JavaScript JSON关联对象键和值都作为日期时间戳
- 将日期时间javascript绑定到表列
- 将JS日期解析为C#日期时间
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- 从javascript数组获取php的日期时间
- 格式化momentjs日期时间
- 这个正则表达式的日期/时间有什么问题
- Mongoose查询在两个日期时间之间提取数据
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 自定义angularjs过滤器日期时间格式额外字符