2017-11-23 16 views
0

タイムスタンプを関数の下に渡していて、日付の文字列を正しく返していますが、下の行を実行しているときに無効な日付のエラーが発生しています。新しいDate()を使用した日付の無効な問題

 var postDate = new Date(this.ConvertServerDateToLocal(timestamp)); 

//postDate returns invalid date object. 


     ConvertServerDateToLocal: function(dateInput){ 
      // EST - UTC offset: 4 hours 

      var offset = 4.0, 
      /* 
      - calculate the difference between the server EST date and UTC 
      - the value returned by the getTime method is the number of milliseconds since 1 January 1970 00:00:00 UTC. 
      - the time-zone offset is the difference, in minutes, between UTC and local time 
      - 60000 milliseconds = 60 seconds = 1 minute 
      */ 
       serverDate = new Date(dateInput), 
       utc = serverDate.getTime() - (serverDate.getTimezoneOffset() * 60000), 
      /* 
      - apply the offset between UTC and EST (4 hours) 
      - 3600000 milliseconds = 3600 seconds = 60 minutes = 1 hour 
      */ 
      clientDate = new Date(utc + (3600000 * offset)); 
      return clientDate.toLocaleString(); 
     } 

以下は、ConvertServerDateToLocal()関数に渡すタイムスタンプの例です。

タイムスタンプ= "2017年11月22日23時05分58秒" // // = "2017年11月9日午前18時30分19秒" を出力した後

タイムスタンプを無効な日付を投げる適切

答えて

0
function ConvertServerDateToLocal(dateInput) { 
    // EST - UTC offset: 4 hours 
    dateInput = "Nov 09, 2017 18:30:19"; 
    var offset = 4.0, 
    /* 
    - calculate the difference between the server EST date and UTC 
    - the value returned by the getTime method is the number of milliseconds since 1 January 1970 00:00:00 UTC. 
    - the time-zone offset is the difference, in minutes, between UTC and local time 
    - 60000 milliseconds = 60 seconds = 1 minute 
    */ 
    serverDate = new Date(dateInput.toString()); 

    utc = serverDate.getTime() - (serverDate.getTimezoneOffset() * 60000); 

    /* 
    - apply the offset between UTC and EST (4 hours) 
    - 3600000 milliseconds = 3600 seconds = 60 minutes = 1 hour 
    */ 
    clientDate = new Date(utc + (3600000 * offset)); 

    //return clientDate.toLocaleString(); 
    alert(clientDate.toLocaleString()); 
} 
作業

入力パラメータを文字列に変換することができました。しかし、私はなぜ1つの日付が働いて、もう1つはうまくいかなかったのか分かりません。答えが見つかったら、ここに投稿してください。私はまた、多くの日付を使用して、彼らは常に痛みです。

関連する問題