在javascript中设置输入类型日期和时间的值

在javascript中设置输入类型日期和时间的值,javascript,html,Javascript,Html,我有两个输入字段: 如何将这些字段设置为当前日期/时间?您只需使用相应的格式设置输入字段的值即可: date是yyyy-MM-dd timeisHH:mm 使用您的示例,您可以做一些简单的事情,如: var date = new Date(); var currentDate = date.toISOString().substring(0,10); var currentTime = date.toISOString().substring(11,16); document.getE

我有两个输入字段:



如何将这些字段设置为当前日期/时间?

您只需使用相应的格式设置输入字段的
值即可:

  • date
    yyyy-MM-dd
  • time
    is
    HH:mm
使用您的示例,您可以做一些简单的事情,如:

var date = new Date();
var currentDate = date.toISOString().substring(0,10);
var currentTime = date.toISOString().substring(11,16);

document.getElementById('currentDate').value = currentDate;
document.getElementById('currentTime').value = currentTime;
var-date=新日期();
var day=date.getDate(),
月=日期。getMonth()+1,
年份=日期。getFullYear(),
小时=日期。getHours(),
min=date.getMinutes();
月=(月<10?:“)+月;
日=(日<10?:“)+日;
小时=(小时<10?:“)+小时;
最小值=(最小值<10?:“)+min;
今日风险值=年+“-”+月+“-”+日,
显示时间=小时+“:”+分钟;
document.getElementById('formdate')。value=today;
document.getElementById(“formtime”).value=displayTime;

我发现使用ISOString,格式当然是标准化的。您只需在“T”处拆分字符串以获得日期和时间数组(包括Zulu,您可能希望拼接出最后一个字符“Z”)

因此,我找到的最简单的解决方案只是:

让tmp=newdate(Date.now());
//tmp现在类似于:“2018-08-21T11:54:50.580Z”
让dateInputFormatted=tmp.toISOString().split('T')[0];
//0,作为拆分生产:[“2018-08-21”,“11:54:50.580Z”]

日志(dateInputFormatted)为了重用它们,您可以制作两个原型:

    Date.prototype.dateToInput = function(){
        return this.getFullYear() + '-' + ('0' + (this.getMonth() + 1)).substr(-2,2) + '-' + ('0' + this.getDate()).substr(-2,2);
    }
    Date.prototype.timeToInput = function(){
        return  ('0' + (this.getHours())).substr(-2,2) + ':' + ('0' + this.getMinutes()).substr(-2,2);
    }
然后像这样使用它们:

    var date = new Date();
    document.getElementById('currentDate').value = date.dateToInput();
    document.getElementById('currentTime').value = date.timeToInput();

为了将日期转换为不带时间的ISO日期,您需要使用
getDate
getMonth
等方法,而不是直接获取
ISOString
并操作字符串。后者将不考虑时区,这将导致意外结果

这里有一个使用ES6的解决方案

//如果值小于10,则返回至少两位数字的函数
常量gettwidights=(值)=>值<10`0${value}`:值;
常量格式日期=(日期)=>{
const day=getwodigits(date.getDate());
const month=gettwidics(date.getMonth()+1);//添加1,因为getMonth为月份返回0-11
const year=date.getFullYear();
返回`${year}-${month}-${day}`;
}
常量格式时间=(日期)=>{
const hours=getwodigits(date.getHours());
const mins=getwodigits(date.getMinutes());
返回`${hours}:${mins}`;
}
const date=新日期();
document.getElementById('currentDate')。value=formatDate(日期);
document.getElementById('currentTime')。值=格式时间(日期)

在现代浏览器上,这非常简单:

只需使用HTML\u元素.valueAsDate而不是HTML\u元素.value

//只是我喜欢按名称访问表单元素
const myForm=document.querySelector(“#我的表单”)
//1:获取本地日期和时间值
让sysDate=new Date()
,userDate=新日期(Date.UTC(sysDate.getFullYear(),sysDate.getMonth(),sysDate.getDate(),sysDate.getHours(),sysDate.getMinutes(),0));
//2:设置接口值!
myForm.currentDate.valueAsDate=userDate
myForm.currentTime.valueAsDate=userDate



假设您有任何文本格式的日期(文本)值

Eg. myDate = 28-08-2020;
现在,要将其设置为
,您需要将日期设置为“YYYY-MM-DD”格式

所以


您在使用哪种代码时遇到问题?请编辑您的问题,以显示您尝试了什么以及具体出现了什么问题。如果
getHours()
getMinutes()
返回
10
下的值,则代码无效。时间输入将拒绝字符串,如
“4:8”
。您需要确保每个组件(小时和分钟)都有一个前导零,例如,
“04:08”
是什么。切片(0,10)”是什么?是否将前10位数字设置为适当的日期格式?你有什么有用的链接吗?
.toISOString()
只会导致错误问题,因为默认情况下它会计算UTC转换,为了防止自动计算,你应该调用
toISOString(true)
来实现它。@NattaWang
toISOString()
不接受任何参数:toISOString()对我不起作用,但是toString()DID比公认的答案更有效(在10分钟内解决问题)。这是本页上的最佳解决方案。其他解决方案只是丢弃用户的时区信息。键入issue Galore这不是一个理想的解决方案,因为它忽略了时区信息。例如:
新日期('2019-08-17T01:42:30.809680+05:30')
位于用户的本地时区。如果使用
.getDate()
,将获得用户的本地日期--
17
。但是在执行
.toISOString().split('T')
时,您会得到UTC日期--
16
,它比预期晚了一天。
var date = new Date();
var dateOptions = { day: '2-digit', month: '2-digit', year: 'numeric' };
var currentDate = date.toLocaleDateString('ja-JP', dateOptions).replace(/\//gi, '-');
var timeOptions = { hour: '2-digit', minute: '2-digit' };
var currentTime = date.toLocaleTimeString('it-IT', timeOptions);

document.getElementById('currentDate').value = currentDate;
document.getElementById('currentTime').value = currentTime;
Eg. myDate = 28-08-2020;
var tempD = date.split("-");
myDate = tempD[2] + "-" + tempD[1] + "-" + tempD[0]; //myDate will be = 2020-08-28
document.getElementById("myDate").value = myDate ;