【问题标题】:Need help to resolve the issue when converting epoch date to human readable format - Javascript将纪元日期转换为人类可读格式时需要帮助解决问题 - Javascript
【发布时间】:2013-01-12 05:15:26
【问题描述】:

我的 java 脚本应用程序使用 .net Web 服务从后端获取数据。除了日期/时间转换外,一切正常。我需要将服务返回的纪元日期转换为用户的本地浏览器日期。

网络服务以以下格式返回日期,

/Date(1335341422660-0500)/ 

这就是我将其转换为人类可读日期所做的工作,

我去掉连字符 (-) 之后的所有内容,并使用剩余的数据进行日期转换

var dateVal=dateField.replace(/-.*\)/g,')');                           
var date = new Date(parseFloat(dateVal.substr(6)));


   var dateArray=date.toString().split(" ");
   if(dateArray.length>3){
  timeZone=("("+dateArray[4])+")"
    }

 var month=date.getMonth() + 1;
 var year=date.getFullYear();
 var date=date.getDate();
 var hours= date.getHours();
 var offset=date.getTimezoneOffset();
 var finalDateStr=(year+"-"+month+"-"+dateValue)+" "+hours+":"+
                            minutes+":"+seconds+" "+timeZone;

对于上述纪元值,预期日期是,

2012 年 4 月 24 日晚上 9:10:22 - 此日期显示在 .net 应用程序中,该应用程序实际上是在创建/更新新项目时将此日期插入 MS SQL 服务器的源应用程序。他们将 SQL 服务器日期转换为本地日期(使用 .net)并在 UI 中显示。

但是当我使用上面的脚本形成日期时,我得到的值是,

2012-4-25 4:10:22 (EDT)(比上述日期多 7 小时)。

我不确定我错在哪里.. 有人可以帮我解决这个问题吗?

【问题讨论】:

  • 那一点信息不是你去掉了时区数据吗?

标签: javascript date time epoch date-conversion


【解决方案1】:

对于此类日期操作,您可能需要考虑使用Moment.js

【讨论】:

    【解决方案2】:

    不确定这是否是解决此问题的好方法...

    这就是我所做的并且似乎工作正常......我再次认为这不是一个万无一失的解决方案,但我检查了不同的时区(有/没有夏令时),它似乎工作...... ..

     var dateVal=dateField.replace(/-.*\)/g,')');                           
                                var date = new Date(parseFloat(dateVal.substr(6)));
    
                                var dateArray=date.toString().split(" ");
                                var timeZone="(Local Time)";
                                if(dateArray.length>3){
                                    timeZone=("("+dateArray[4])+")"
                                }
    var date2=dateField.split("-");
                         var dateOffset=(date2[1].toString().replace(")","").replace("/",""));
    
    if( date.toString().toUpperCase().indexOf("DT")!==-1){                        
     date.setHours(date.getHours()-(parseFloat(parseFloat(dateOffset).toString().replace(/0*$/, ''))+2));
    }else{
     date.setHours(date.getHours()-(parseFloat(parseFloat(dateOffset).toString().replace(/0*$/, ''))+1));
    }
    
    
                                var month=date.getMonth() + 1;
                                var year=date.getFullYear();
                                var dateValue=date.getDate();
                                var hours= date.getHours();                              
                                var minutes= date.getMinutes();
                                var seconds=date.getSeconds()
                                var finalDateStr=(year+"-"+month+"-"+dateValue)+" "+hours+":"+
                                minutes+":"+seconds+" "+timeZone;
    

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 2021-02-19
      • 2012-11-12
      • 2021-06-21
      • 1970-01-01
      • 2019-03-26
      • 2019-12-03
      • 1970-01-01
      • 2014-07-22
      相关资源
      最近更新 更多