在JS中将以下日期格式化为YYYY-mm-dd

时间:2016-02-03 09:00:52

标签: javascript date datetime

我如何转换以下日期:

Thu Feb 18 12:25:00 SGT 2016

采用'2016-02-18'等格式?

我知道,

  1. 使用新的Date(Date.parse('...'))和调用,将帮助我获得它。但问题是时区部分(SGT)。
  2. 我不想在那里使用任何库。
  3. 解决这个问题的有效方法是什么?

    感谢任何帮助!

    PS:

    好的,我试过了

    new Date(Date.parse('Thu Feb 18 12:25:00 SGT 2016'))
    

    但当然,这是我'无效日期'错误。

4 个答案:

答案 0 :(得分:2)

我想我应该等你发布一些代码,但这是一个例子。它将字符串拆分为多个部分,将月份名称转换为数字,然后按所需顺序输出所需的位数。月份名称上的切片是为了防止您想要使用完整的月份名称,但也许这是不必要的:

function reformatDate(s){
  var b = s.split(/[\s:]/);
  var months = {jan:'01',feb:'02',mar:'03',apr:'04',may:'05',jun:'06',
                jul:'07',aug:'08',sep:'09',oct:'10',nov:'11',dec:'12'};
  return b[7] + '/' + months[b[1].toLowerCase().slice(0,3)] + '/' + ('0'+b[2]).slice(-2);
}

document.write(reformatDate('Thu Feb 18 12:25:00 SGT 2016'));

该格式日期字符串(y / m / d)与我所知道的任何标准不一致,并且可能不会被大多数浏览器解析。

答案 1 :(得分:0)

为什么不直接使用日期对象的各个组件并从中构建字符串?

full_date = new Date();
formatted_date_string = full_date.getFullYear() + "-" + (full_date.getMonth()+1) + "-" + full_date.getDate();

我会留给你整理当天和月份的领先0。

答案 2 :(得分:0)

var input="Thu Feb 18 12:25:00 SGT 2016";
  
var ar=input.split(" ");

  var months = {"Jan":"01", "Feb":"02", "Mar":"03", "Apr":"04", "May":"05", "Jun":"06", "Jul":"07", "Aug":"08", "Sep":"09", "Oct":"10", "Nov":"11", "Dec":"12"};

console.log(ar[ar.length-1]+"-"+months[ar[1]]+"-"+ar[2]);

  

尝试此代码无需解析日期。请在控制台上查看结果。

答案 3 :(得分:0)



var date = "Thu Feb 18 12:25:00 SGT 2016";

date = date.replace("SGT","GMT+0800") // replaces SGT with GMT+0800 because 
singapore time is 8 hrs ahead than GMT timezone

var newdate = new Date(Date.parse(date))

var requiredDate = newdate.toLocaleDateString()