如何在JavaScript中从日期中移除本地时区?

48

我想知道是否可以使用JavaScript从日期中删除时区?我以JSON格式获取datetime,现在我想将其设置回去,但它返回比我实际想要/需要的更多信息。

我现在拥有的是:

var d = new Date();
d.setTime(1432851021000);
document.write(d);

输出结果大致如下:

Thu May 28 2015 16:10:21 GMT-0600 (CST)

我希望只显示到小时,并删除GMT-0600(CST)。

我知道JavaScript会根据当前用户的时区来获取该信息,这是一个问题,因为该信息可能保存在不同的国家/地区。

我正在尝试避免使用类似以下的格式:

d.date() + "/" + d.month()...etc

有更好的解决方案吗?


为什么不使用momentjs?http://momentjs.com/ - victorkurauchi
13个回答

0

有两种方法 -

1. .toLocaleString() 会以以下格式返回日期时间 - '24/11/2021, 20:19:36'

但有一个注意点,您无法解析此日期 -

const myDate = new Date('24/11/2021, 20:19:36')
=> Invalid Date

如果您想再次解析日期并删除时区,请使用第二种方法:
2. .split("GMT")[0]
输入: new Date() Wed Nov 24 2021 20:23:54 GMT+0530 (India Standard Time)
输出:
"Wed Nov 24 2021 20:25:17 GMT+0530 (India Standard Time)".split('GMT')[0]
'Wed Nov 24 2021 20:25:17 '

0
例如,我们有一个日期:
const dateWithTimeZone = '2010-02-10T19:30:00.000Z'

紧凑的解决方案将其格式化为UTC,并从中删除GMT。最后,我们将得到没有时区的日期时间。
const dateWithoutTimeZone = new Date(date).toUTCString().replace(' GMT', '')

输出: '2010年2月10日星期三 19:30:00'

-1

我感觉有一个更好但更简单的解决方案!

  1. 从你的“日期变量”中提取日,月和年。

    • var day = d.getDate(); //获取日
    • var month = d.getMonth(); // 获取月
    • var year = d.getYear(); // 获取年
  2. 现在只需分配一个新变量,如下所示

    • var newDate = day+"/"+(month+1)+"/"+year; //请注意,我们正在执行(month+1),因为在Javascript中,月份变量从{0-11}运行(0:Jan,1:Feb,2:Mar,4:Apr ... 11:Dec)

这样,您就拥有了自定义的无时区日期!


getYear()已被弃用,实际上并没有返回完整的年份。我认为你需要使用getFullYear() - Tor
不好意思,看一下我的代码片段吧。var day = d.getDate(); var month = d.getMonth(); var year = d.getYear(); var dT = new Date; var FulldT =new Date; dT = day+"/"+(month+1)+"/"+year; FulldT = dT.setFullYear(year,month,day); Logger.log(dT); Logger.log(FulldT);输出: 1>. 7/10/2019 2>.Mon Oct 07 23:08:21 GMT+05:30 2019使用FullYear会再次引入时区。 - Anshul Bansal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接