javascript格式日期转换为易读格式

javascript格式日期转换为易读格式,javascript,datetime,Javascript,Datetime,我有一个代码,它以一种易读的格式为我获取日期,但它当前输出此格式20200819,但我想将其转换为2020-08-19这可能吗 这是我的密码 const-dateConverter=(dateIn)=>{ var yyyy=dateIn.getFullYear(); var mm=dateIn.getMonth()+1;//getMonth()是基于零的 var dd=dateIn.getDate(); 返回字符串(10000*yyy+100*mm+dd);//mm和dd的前导零 } var t

我有一个代码,它以一种易读的格式为我获取日期,但它当前输出此格式
20200819
,但我想将其转换为
2020-08-19
这可能吗

这是我的密码

const-dateConverter=(dateIn)=>{
var yyyy=dateIn.getFullYear();
var mm=dateIn.getMonth()+1;//getMonth()是基于零的
var dd=dateIn.getDate();
返回字符串(10000*yyy+100*mm+dd);//mm和dd的前导零
}
var today=新日期();
日志(dateConverter(今天));

您不需要转换器功能。只需将
toLocaleDateString
与具有此格式的区域设置一起使用,如瑞典

为了更明确地了解格式,我添加了两个扩展:

console.log(newdate().toLocaleDateString(“en-se”);
//明确数字部分的格式
console.log(new Date().toLocaleDateString(“en-se”),
{年:“数字”,月:“两位数”,日:“两位数”})
);
//要明确分隔符,请执行以下操作:
console.log(new Date().toLocaleDateString(“en-se”),
{年:“数字”,月:“两位数”,日:“两位数”})
.替换(/\D/g,“-”)

);您不需要转换器功能。只需将
toLocaleDateString
与具有此格式的区域设置一起使用,如瑞典

为了更明确地了解格式,我添加了两个扩展:

console.log(newdate().toLocaleDateString(“en-se”);
//明确数字部分的格式
console.log(new Date().toLocaleDateString(“en-se”),
{年:“数字”,月:“两位数”,日:“两位数”})
);
//要明确分隔符,请执行以下操作:
console.log(new Date().toLocaleDateString(“en-se”),
{年:“数字”,月:“两位数”,日:“两位数”})
.替换(/\D/g,“-”)
);


您可以使用
padStart
创建您自己的字符串,如下图所示,但我建议查看date fns或moment.js库,因为它们可以很好地处理这个问题

const-dateConverter=(dateIn)=>{
var year=dateIn.getFullYear();
var month=dateIn.getMonth()+1;//getMonth()是基于零的
var day=dateIn.getDate();
返回年份+“-”+月.toString().padStart(2,“0”)+“-”+日.toString().padStart(2,“0”);
}
var today=新日期();

日志(dateConverter(今天))
您可以使用
padStart
创建您自己的字符串,如下所示,但我建议查看date fns或moment.js库,因为它们可以很好地处理此问题

const-dateConverter=(dateIn)=>{
var year=dateIn.getFullYear();
var month=dateIn.getMonth()+1;//getMonth()是基于零的
var day=dateIn.getDate();
返回年份+“-”+月.toString().padStart(2,“0”)+“-”+日.toString().padStart(2,“0”);
}
var today=新日期();

日志(dateConverter(今天))您可以使用模板文本来获得所需的格式,我很确定它们必须是一种更简单的方式,但这与您的代码尽可能相似

    const dateConverter = (dateIn) => {
  var yyyy = dateIn.getFullYear();
  var mm = dateIn.getMonth() + 1;
  if (mm < 10) mm = `0${mm}`; // getMonth() is zero-based
  var dd = dateIn.getDate();
  if (dd < 10) dd = `0${dd}`;
  return `${yyyy}-${mm}-${dd}`;
};

var today = new Date();
console.log(dateConverter(today));
const-dateConverter=(dateIn)=>{
var yyyy=dateIn.getFullYear();
var mm=dateIn.getMonth()+1;
如果(mm<10)mm=`0${mm}`;//getMonth()是基于零的
var dd=dateIn.getDate();
如果(dd<10)dd=`0${dd}`;
返回`${yyyy}-${mm}-${dd}`;
};
var today=新日期();
日志(dateConverter(今天));

今天输出:2020-08-19

您可以使用模板文本来获得所需的格式,我很确定它们必须是一种更简单的方式,但是,这与您的代码尽可能相似

    const dateConverter = (dateIn) => {
  var yyyy = dateIn.getFullYear();
  var mm = dateIn.getMonth() + 1;
  if (mm < 10) mm = `0${mm}`; // getMonth() is zero-based
  var dd = dateIn.getDate();
  if (dd < 10) dd = `0${dd}`;
  return `${yyyy}-${mm}-${dd}`;
};

var today = new Date();
console.log(dateConverter(today));
const-dateConverter=(dateIn)=>{
var yyyy=dateIn.getFullYear();
var mm=dateIn.getMonth()+1;
如果(mm<10)mm=`0${mm}`;//getMonth()是基于零的
var dd=dateIn.getDate();
如果(dd<10)dd=`0${dd}`;
返回`${yyyy}-${mm}-${dd}`;
};
var today=新日期();
日志(dateConverter(今天));

今天的产量:2020-08-19

这似乎微不足道。你试过什么吗?你遇到的问题是什么?这似乎很琐碎。你试过什么吗?你遇到的问题是什么?这是给我未定义这给了“/”not“-”的分隔符,就像问的那样。真的吗??我得到了“-”分隔符,这确实是瑞典的格式。你有没有在代码片段上按Run键,@Luke?是的,我在Chrome上,我得到了
19/08/2020
。这就是基于区域设置的日期的问题,如果你想让字符串保持一致,你必须自己创建字符串或使用适当的库。我也在Chrome上,没有斜杠。这给了我未定义的东西。这给了像所问的那样的“/”not“-”分隔符。真的吗??我得到了“-”分隔符,这确实是瑞典的格式。你有没有在代码片段上按Run键,@Luke?是的,我在Chrome上,我得到了
19/08/2020
。这就是基于区域设置的日期内容的问题,也是您必须自己制作字符串或使用适当的库(如果您希望字符串保持一致)的众多原因之一。我也在Chrome上,没有斜杠。这些都不会产生OP要求的输出。你为什么要复制/粘贴它?我忘了提到它的用途。我的错。您可以使用上面的任何格式,然后运行以下命令。new Date().toISOString().slice(0,10).split('-').reverse().join('/')
toISOString
将使用UTC,如果您位于UTC以外的时区,则可以给您一天的日期差。这些都不会产生OP请求的输出。你为什么要复制/粘贴它?我忘了提到它的用途。我的错。您可以使用上面的任何格式,然后运行以下命令。new Date().toISOString().slice(0,10).split('-').reverse().join('/')
toISOString
将使用UTC,如果您位于UTC以外的时区,则可以使用UTC为您提供一天的日期差。