如何在我的情况下设置日期格式

How to setup the date format in my case

本文关键字:设置 日期 格式 情况下 我的      更新时间:2023-09-26

我正在尝试将http请求数据转换为所需的正确日期格式。

我从一家公司的http请求数据返回类似的数据

2015-03-11, 2015-05-13, 2015-11-21...etc.

我的密码。

var day1 = '2015-03-11'; //return from http request
var day2 = '2015-05-13'; //return from http request
var date = new Date(day1) -> 
//time will be off 1 day for some reason 
//because javascript can't recognize 03 and it is a string.`

我需要能够将2015-03-11转换为March, 11, 2015。有什么正确的方法来解决这个问题吗?

非常感谢!

问题源于JavaScript日期实例包含一天中的时间部分,以及像您这样的ISO日期被解释为UTC的相关事实。如果您在西欧西部,那么您的计算机所在的时区会使2015年3月11日的UTC午夜成为您所在时区2015年3月份10日的某个时间。

有几种方法可以解决这个问题;这里有一个:

var utcdate = new Date("2015-03-11");
var local = new Date(utcdate.getUTCFullYear(), utcdate.getUTCMonth(), utcdate.getUTCDate());

这将使"本地"日期与指示的原始日期字符串相同。

正如链接重复问题的答案中所提到的,您还可以在实例化日期之前操作日期字符串。最好的是确保您的服务器生成格式良好的日期。

修订为用斜杠替换ISO格式的破折号:

var day1 = '2015-03-31'; //return from http request
var day2 = '2015-05-13'; //return from http request
function getDateFormat(day)
{
    var date = new Date(day.replace(/-/g, '/'));
    var monthNames = ["January", "February", "March", "April", "May", "June",
      "July", "August", "September", "October", "November", "December"
    ];
    var dateString = monthNames[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear();
    alert(dateString);//just to test
}
getDateFormat(day1);
getDateFormat(day2);

如果你只想显示月份、日期和年份的名称,那么这就可以了。

已更新以将其放入函数中。

去掉多余的"0"怎么样?

var date = new Date(day1.replace('-0', '-'));