我如何转换以下日期:
Thu Feb 18 12:25:00 SGT 2016
采用'2016-02-18'等格式?
我知道,
解决这个问题的有效方法是什么?
感谢任何帮助!
PS:
好的,我试过了
new Date(Date.parse('Thu Feb 18 12:25:00 SGT 2016'))
但当然,这是我'无效日期'错误。
答案 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()