簡體   English   中英

將紀元日期轉換為人類可讀格式時需要幫助以解決問題-Javascript

[英]Need help to resolve the issue when converting epoch date to human readable format - Javascript

我的Java腳本應用程序使用.net Web服務從后端獲取數據。 除日期/時間轉換外,一切正常。 我需要將服務返回的紀元日期轉換為用戶的本地瀏覽器日期。

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;

對於上述紀元值,預計日期為

4/24/2012 9:10:22 PM-該日期顯示在.net應用程序中,該應用程序實際上是源應用程序,只要創建/更新新項目,該應用程序就會將此日期插入MS SQL Server。 他們將SQL Server日期轉換為本地日期(使用.net)並將其顯示在UI中。

但是當我使用上述腳本形成日期時,我得到的值是

2012年4月25日4:10:22(EDT)(與上述日期相比增加了7小時)。

我不確定我在哪里錯了。有人可以幫助我解決這個問題嗎?

對於此類日期操作,您可能需要考慮使用Moment.js

不確定這是否是解決此問題的好方法...

這是我所做的,並且似乎可以正常工作。。。再次,我不認為這是一個簡單的解決方案,但是我檢查了各個時區(帶/不帶夏時制),並且似乎可以正常工作……

 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM