格式化JavaScript日期

时间:2019-07-02 15:58:24

标签: javascript

我有一个表示日期的字符串,格式如下:

Jun 29, 2019 12:00:00 AM

我要设置以下日期格式:

2019-06-29

有没有不用任何外部库的方法?

我尝试了以下操作,但它在Chrome浏览器中工作正常,但在Edge中无法正常工作:

var stringDate = 'Jun 29, 2019 12:00:00 AM';
var date = new Date(stringDate).toISOString().slice(0,10);

4 个答案:

答案 0 :(得分:2)

使用像https://momentjs.com/这样的外部库当然是最简单的选择。

但是,如果日期始终采用您说的格式,则可能只需要一点正则表达式和javascript。

例如

var resplitdate = /^(\w{3}) (\w{1,2}), (\w{4})/;
var months = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(",");

function pz(s, size) {
 var r = s.toString();
 while (r.length < size) r = '0' + r;
 return r;
}

function convertDate(d) {
  var splits = resplitdate.exec(d);
  return splits[3] + '-' + 
    pz(months.indexOf(splits[1]) + 1, 2) + "-" +
    pz(splits[2], 2);
}


var stringDate = 'Jun 29, 2019 12:00:00 AM';
console.log(stringDate, " = ", convertDate(stringDate));

答案 1 :(得分:-2)

您可以使用getFullYear()getDay()getDate()来获取值。然后,您可以使用padStart()用零填充每个项目的开头。

var date = new Date('Jun 29, 2019 12:00:00 AM');

console.log(`${date.getFullYear()}-${String(date.getDay()).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`)

答案 2 :(得分:-2)

使用javascript(仅)格式化日期的简单方法如下-

var stringDate = 'Jun 29, 2019 12:00:00 AM';

function appendLeadingZeroes(n){
  if(n <= 9){
    return "0" + n;
  }
  return n
}

let current_datetime = new Date(stringDate);
let formatted_date = current_datetime.getFullYear() + "-" + appendLeadingZeroes(current_datetime.getMonth() + 1) + "-" + appendLeadingZeroes(current_datetime.getDate())
console.log(formatted_date)

答案 3 :(得分:-5)

const yourDate = 'Jun 29, 2019 12:00:00 AM';

const convertDate = (data) => {
   const formattedDate = new Date(data);
   const date = formattedDate.getDate();
   const month = formattedDate.getMonth()+1;
   const year = formattedDate.getFullYear();

   return `${year}-${month}-${date}`;

 }

convertDate(yourDate);