【问题标题】:remove the local timezone from a date in javascript?从javascript中的日期删除本地时区?
【发布时间】:2015-05-29 17:31:58
【问题描述】:

我想知道是否可以使用 javascript 从日期中删除时区?我得到了 json 格式的日期时间,现在我想将其设置回来,但它会返回更多关于我真正想要/需要的信息。

我现在拥有的是:

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

有没有更好的解决方案?

【问题讨论】:

标签: javascript datetime


【解决方案1】:

使用时刻

moment().utcOffset(0, true).format()

从 Javascript 日期开始

var date = new Date();
Tue Sep 06 2021 00:00:00 GMT+0200

var isoDate = date.toISOString()
'2021-09-05T22:00:00.000Z'

var clearUTCDate = moment(date).utcOffset(0, true).format() 
'2021-09-06T00:00:00Z'

【讨论】:

    【解决方案2】:

    我相信d.toDateString() 会输出你要找的格式。

    var d = new Date();
    d.setTime(1432851021000);
    d.toDateString(); // outputs to "Thu May 28 2015"
    d.toGMTString(); //outputs to "Thu, 28 May 2015 22:10:21 GMT"
    

    甚至d.toLocaleString() “2015 年 5 月 28 日,下午 6:10:21”

    Date()有很多方法

    【讨论】:

    • d.toLocaleString() 输出到"5/28/2015, 6:10:21 PM"
    • 对不起,我猜你要找的是d.toGMTString();
    • toLocateString 效果很好,有没有办法指定格式?像 DD-MM-YY 吗?
    • toLocaleString 接受不同的格式化选项。我会在MDN 上查看。这将通过d.toLocaleString("en-GB"); 输出你想要的
    • 啊!谢谢 .toDateString 为我做的。我不得不用 HTML5 日期选择器中的斜线替换破折号,但我担心的是。 var d = new Date($('#Dances_Moderated_SingleDate').val().replace(/-/g, '\/')); retVal=d.toDateString();
    【解决方案3】:

    与momentjs

    var d = new Date();
    d.setTime(1432851021000);
    
    var newdate = moment(d);
    
    alert(newdate.format("MMM DD/MM/YYYY HH:mm:ss "));
    

    http://jsfiddle.net/vynvepak/

    【讨论】:

      【解决方案4】:

      我觉得有更好更简单的解决方案!

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

        • var day = d.getDate(); //获取日期
        • var 月 = d.getMonth(); // 获取月份
        • var 年份 = 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() 是你想要的
      • 没有兄弟看看我的代码 sn-p var day = d.getDate(); var 月 = d.getMonth();变种年 = d.getYear(); var dT = 新日期; var FulldT =新日期; dT = 日+"/"+(月+1)+"/"+年; FulldT = dT.setFullYear(年,月,日);记录器.log(dT);记录器.log(FulldT);输出:1>。 2019 年 7 月 10 日 2>.Mon Oct 07 23:08:21 GMT+05:30 2019 通过使用 FullYear,您再次引入了时区。
      【解决方案5】:

      因为你想要的部分总是有固定的长度,你可以使用:

      d.toString().slice(0, 24)
      

      jsfiddle

      【讨论】:

      • 谢谢,但是如果有人有另一个不是 GMT 的时区会发生什么?还是-12?
      • 那么,如果时区不同,期望的输出是什么?是否要将时间转换为特定时区?或者在满足某些条件时显示它?否则 slice 只会删除最后一个时区位。
      【解决方案6】:

      您可以使用 2 个选项:
      1.使用分割函数:d.split('GMT')。这给了你一个数组。
      2.获取常用的js数据函数,如getHour和getFullYear等,根据需要格式化结果。

      【讨论】:

      • 谢谢,第二个选项有点讨厌......特别是因为我必须检查一天是否是次要 10,然后添加一个 0 以使其具有正确的格式 01,02 ,与月份相同,添加 1 因为它返回 0-11 。 GMT 是默认值吗?还是取决于电脑的配置?
      【解决方案7】:
      var x = d.toDateString().length;
      var result = d.toDateString() + d.toString().substring(x,x+9);
      

      【讨论】:

        【解决方案8】:
        var date = new Date(myUnixTimestamp*1000);
        var prettyDate = date.toLocaleString();
        

        【讨论】:

          【解决方案9】:

          我创建了简单的 js 函数来从日期时间字符串中删除时区部分。它会给出类似的输出

          • 2019-07-27T19:00:00.000-0700 => 2019-07-27T19:00:00.000
          • 2019-09-17T19:00:00.000+0100 => 2019-09-17T19:00:00.000

          function removeTimeZonePart(dateString) {
                      
                       let finalDate = '';
                      
                       if (dateString.split('+').length > 1) {
                           let b = dateString.split('+');
                      
                           finalDate = b[0];
                       } else {
                           let b = dateString.split('-');
                      
                            if (b.length > 1) {
                             b.pop();
                             finalDate = b.join('-');
                           }
                       }
          
                       return finalDate;
          
          }
          
          alert(removeTimeZonePart('2019-07-27T19:00:00.000-0700'));

          【讨论】:

            【解决方案10】:

            使用Luxon,下面的示例代码采用当前日期和时间,使其在ISO Standard Format 中与时区无关。

            const { DateTime, ToISOTimeOptions } = window.luxon;
            const currentDate = new Date();
            
            // Unspecified timezone.
            console.log(
              DateTime.fromJSDate(currentDate)
                .toISO(
                      {includeOffset:false} // ToISOTimeOptions
                )
              );
            <script src="https://cdn.jsdelivr.net/npm/luxon@2.0.2/build/global/luxon.min.js"></script>

            【讨论】:

              【解决方案11】:

              有两种方法-

              1. .toLocaleString() 将以这种格式为您提供日期时间- '24/11/2021, 20:19:36'

              但有一个警告,您无法解析此日期-

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

              如果您希望能够再次解析日期,并删除时区,请使用第二种方法

              2。 .split("GMT")[0]

              输入: 新日期() 2021 年 11 月 24 日星期三 20:23:54 GMT+0530(印度标准时间) 输出:

              "Wed Nov 24 2021 20:25:17 GMT+0530 (India Standard Time)".split('GMT')[0]
              'Wed Nov 24 2021 20:25:17 '
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-01-16
                • 1970-01-01
                • 2020-01-23
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-12-28
                • 2016-04-07
                相关资源
                最近更新 更多