jQuery将日期转换为唯一格式

尝试使用jquery以一种独特的格式转换日期 – 使用以下function(同样,尝试与谷歌的其他人)

function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate() , year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('-'); } document.getElementById('printdate').innerHTML = formatDate('07/26/2017') ; 

我有两种日期格式的输入,如 – 1) 5/16/2017年5月5/16/2017和2) 2017-5-16

预计产量将为2017-07-16

对于印度时区,上述函数按预期返回输出,如上述每个输入日期的2017-07-16

但是,如果我将时区更改为美国/加拿大,它会在前一天返回日期,即输入日期2017-06-26 ,它返回2017-06-25 ,输入日期为2017-06-2507/26/2017 ,它返回2017-07-26

这是jsfidle – https://jsfiddle.net/L1j8ho1j/2/

是什么原因,它是在约会前一天返回的?

有没有其他function来转换日期,返回相同的输入日期与预期的格式?

任何帮助表示赞赏。

谢谢。

如果您愿意使用Moment.js,那么您可以使用时刻时区 。这可以解决您的日期时区和日期格式问题。

您需要加载以下所有内容:

  • 时刻
  • 那一刻,时区

使用它,您的formatDate方法应该是这样的。

 function formatDate(time, zone) { var format = 'YYYY-MM-DD'; return moment(time, format).tz(zone).format(format); } moment.tz.add("Asia/Kolkata|HMT +0630 IST|-5R.k -6u -5u|01212|-18LFR.k 1unn.k HB0 7zX0|15e6") moment.tz.add("America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0") var date = new Date(); console.log(formatDate(date, 'Asia/Kolkata')); console.log(formatDate(date, 'America/Los_Angeles')); 

您可以通过此链接获取最新的时区数据。