首页 > js时间格式转换问题

js时间格式转换问题

怎样把2016-08-28T00:00:00+08:00格式的时间转化为2016/08/28 ?


2016-08-28T00:00:00+08:00
一般这种格式字符串长度都是固定的,所以可以直接截取 前10个字符 2016-08-28,然后用替换的方式,把 - 换成 /


原生:

date.toLocaleDateString();


转换库的话有:moment.js 和 fecha 等。

原生 JS 是:

var date = new Date();
var year = date.getFullYear();
var momth = date.getMonth() + 1;
var day = date.getDate();

return year + '/' + momth + '/' + day;

如果你设计的时间转换逻辑比几多的话建议使用momentjs非常方便。

var year = new Date("2016-08-28T00:00:00+08:00").getFullYear()

var month = new Date("2016-08-28T00:00:00+08:00").getMonth()+1

var day = new Date("2016-08-28T00:00:00+08:00").getDate()

Year+'/'+month+'/'+day

   var d = new Date();
    
    console.log(d.toLocalDateString());

标准答案太多了,我来个另类的方法:
(new Date()).toLocaleString().replace(/\D+/g,"/").slice(1,-9);

以上代码存在浏览器兼容问题

在 Edge/IE 浏览器使用 toLocaleString 方法时,返回的字符串首会有一个 不可见的 \u1f5a 字符

已修改:

(new Date()).toLocaleDateString().replace(/^.*?(\d+)\D+(\d+)\D+(\d+)\D+/g,"$1/$2/$3");

这里需要替换因为 IE 系列返回的是
"‎2016‎年‎8‎月‎3‎日" 这样的字符串


补充

找到一个更简单的正则替换:

(new Date()).toLocaleDateString().match(/((?!\D).)+/g).join("/");

var year = data[i].expiry_date.substring(0,4);
var month = data[i].expiry_date.substring(5,7);
var day = data[i].expiry_date.substring(8,10);
var expiryData = year + '/' + month + '/' + day;
【热门文章】
【热门文章】