Javascript 如何将时间戳创建的日期转换为yyyy-MM-dd格式

Javascript 如何将时间戳创建的日期转换为yyyy-MM-dd格式,javascript,html,date,datetime,Javascript,Html,Date,Datetime,假设有个约会: var date_not_formatted=new Date(timestamp); var dateFormatted=new Date(date_not_formatted.getFullYear()+"-"+(date_not_formatted.getMonth()+1)+"-"+date_not_formatted.getDate()); 我将此数据放在输入类型日期中,并在控制台中读取此警告: The specified value "Sat Se

假设有个约会:

 var date_not_formatted=new Date(timestamp);
        var dateFormatted=new Date(date_not_formatted.getFullYear()+"-"+(date_not_formatted.getMonth()+1)+"-"+date_not_formatted.getDate());
我将此数据放在输入类型日期中,并在控制台中读取此警告:

The specified value "Sat Sep 15 2018 00:00:00 GMT+0200 (daylight savings time
 dell\u2019central Europe)" does not conform to the required format, "yyyy-MM-dd".

有人能帮我吗?

如果您想将日期转换为yyyy-MM-dd,您可以这样做:

var时间戳=1537345115000;
var date\u not\u FORMATED=新日期(时间戳);
var formatted_string=date_not_formatted.getFullYear()+“-”;
如果(日期未格式化。getMonth()<9){
格式化的_字符串+=“0”;
}
格式化的字符串+=(日期未格式化。getMonth()+1);
格式化的_字符串+=“-”;
如果(日期未格式化。getDate()<10){
格式化的_字符串+=“0”;
}
格式化的_字符串+=日期_未格式化。getDate();

console.log(格式化的_字符串)如果要将日期转换为yyyy-MM-dd,可以执行以下操作:

var时间戳=1537345115000;
var date\u not\u FORMATED=新日期(时间戳);
var formatted_string=date_not_formatted.getFullYear()+“-”;
如果(日期未格式化。getMonth()<9){
格式化的_字符串+=“0”;
}
格式化的字符串+=(日期未格式化。getMonth()+1);
格式化的_字符串+=“-”;
如果(日期未格式化。getDate()<10){
格式化的_字符串+=“0”;
}
格式化的_字符串+=日期_未格式化。getDate();

console.log(格式化的_字符串)这可能有助于准确地了解您的需求。但有几个变量只是为了更好地理解目的而使用的

//req_date is having the date in the required format
var dat = new Date();
var req_date = dat.getFullYear().toString()+'-';
var mon = (dat.getMonth()+1).toString();
if(mon.length == 1){
    req_date += '0'+mon+'-';
}
else{
    req_date += mon+'-'
}
var da = (dat.getDate()).toString();
if(da.length == 1){
    req_date += '0'+da;
}
else{
    req_date += da
}
//console.log(req_date)//Your try checking it in browser(Output:-2018-09-19).

这可能有助于准确地了解您的需求,但有许多变量仅用于更好地理解目的

//req_date is having the date in the required format
var dat = new Date();
var req_date = dat.getFullYear().toString()+'-';
var mon = (dat.getMonth()+1).toString();
if(mon.length == 1){
    req_date += '0'+mon+'-';
}
else{
    req_date += mon+'-'
}
var da = (dat.getDate()).toString();
if(da.length == 1){
    req_date += '0'+da;
}
else{
    req_date += da
}
//console.log(req_date)//Your try checking it in browser(Output:-2018-09-19).
也可以是一行,但为了更清楚,我已经把它分解了

也可以是一行,但为了更清楚,我已经把它分解了

您可以尝试以下方法:

var timestamp = 1537345115000;
var date = new Date(timestamp);
var dd_mm_yyyy = date.toLocaleDateString();
var yyyy_mm_dd = dd_mm_yyyy.replace(/(\d+)\/(\d+)\/(\d+)/g, "$3-$2-$1");
您可以尝试以下方法:

var timestamp = 1537345115000;
var date = new Date(timestamp);
var dd_mm_yyyy = date.toLocaleDateString();
var yyyy_mm_dd = dd_mm_yyyy.replace(/(\d+)\/(\d+)\/(\d+)/g, "$3-$2-$1");

Date.toString()
不以
yyyy-MM-dd
格式返回日期。您不必将
dateFormatted
转换为date,并确保月和日有2位数字。查看错误,您的时间戳格式看起来像javascript控制台的默认输出。这真的不是一个好的起点(它的时区描述在结尾打破了它)。序列化的时间戳应该是某种标准的、机器可读的格式:ISO、从纪元开始的滴答声等等(日期构造函数可以愉快地接受所有这些内容!yyyy-MM-dd不是绝对必需的)。您能告诉我们您的起始格式是什么,以及为什么吗?
Date.toString()
不以
yyyy-MM-dd
格式返回日期。您不必将
dateFormatted
转换为date,并确保月和日有2位数字。查看错误,您的时间戳格式看起来像javascript控制台的默认输出。这真的不是一个好的起点(它的时区描述在结尾打破了它)。序列化的时间戳应该是某种标准的机器可读格式:ISO、从纪元开始的滴答声等等(日期构造函数可以愉快地接受所有这些!yyyy-MM-dd不是绝对必需的)。您能告诉我们您的起始格式是什么吗,为什么呢?当我把这个日期输入到输入类型日期时,我得到了相同的警告,因为日期格式必须是
yyy-MM-dd
格式。例如,
2018-09-19
,not
2018-9-19
应该
if(date\u not\u formatted.getMonth()<9)
不应该
if(date\u not\u formatted.getMonth()<10)
?如果我错了,请您解释一下原因。当我将此日期设置为输入类型日期时,我得到了相同的警告,因为日期格式必须为
yyy-MM-dd
格式。例如,
2018-09-19
,not
2018-9-19
应该
if(date\u not\u formatted.getMonth()<9)
不应该
if(date\u not\u formatted.getMonth()<10)
?如果我错了,请你解释一下原因好吗?