2017-01-06 44 views
-1

我需要一個幫助。我試圖格式日期時間使用JavaScript/JQuery的,但沒有發生。我在下面解釋我的代碼。如何使用javascript/Jquery格式化現有日期

<div id="divID"></div> 
    <script> 
     var formatDate = function(date){ 
      return date.getDate() + "/" + date.getMonth() + "/" +date.getYear() + " "+ date.getHours() + ":" + date.getMinutes() + ":" + date.getMintutes() + ":" + date.getSeconds(); 
     } 
     var timestamp="2016-12-16 07:58:30 AM "; 
     var date= new Date(timestamp); 
     document.getElementById('divID').innerHTML = formatDate(date); 
    </script> 

在這裏,我有現有的時間2016-12-16 07:58:30 AM,我需要將其更改爲16-12-2016 07:58:30 AM但在這裏我無法得到正確的output.Please幫助我。

+0

檢查這個插件https://github.com/phstc庫/ jquery-dateFormat – rahulsm

+3

你可以使用'moment.js' http://momentjs.com/這很容易。 – Ionut

回答

1

代碼有幾個問題:

  • 你有一個語法錯誤,你打電話getMintutes()
  • 你似乎是試圖展示分鐘兩次,這樣你就可以刪除這些調用之一
  • getFullYear()適合您的需求比getYear()
  • 您應該使用-/來分隔日期值。
  • 您可以通過檢查hours < 12
  • 你時刻字符串是無效的添加AMPM字符串的結尾。它不應該包含'AM'或'PM' - 因此代碼在Firefox中不起作用。

考慮到這一點,試試這個:

var formatDate = function(date) { 
 
    return date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear() + " " + ('0' + date.getHours()).slice(-2) + ":" + ('0' + date.getMinutes()).slice(-2) + ":" + ('0' + date.getSeconds()).slice(-2) + ' ' + (date.getHours() < 12 ? 'AM' : 'PM'); 
 
} 
 

 
var timestamp = "2016-12-16 07:58:30"; 
 
var date = new Date(timestamp); 
 
document.getElementById('divID').innerHTML = formatDate(date);
<div id="divID"></div>

你可以使用一個庫,使日期格式邏輯簡單,但它是相當浪費加載完全庫時一行代碼工作正常。

+0

也時間戳應該是'「2016-12-16 07:58:30」'沒有「AM」 – d3vi4nt

+0

抱歉'AM/PM'丟失。 – satya

+0

另外我需要'AM/PM'。 – satya

1

您使用的時間戳將返回無效日期,因此您應該刪除AM。使用moment.js你可以做這樣的:

var timestamp = "2016-12-16 07:58:30"; 
 
var formattedDate = moment(timestamp).format('DD-MM-YYYY h:mm:ss A'); 
 
console.log(formattedDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.min.js"></script>

+0

它在Firefox中顯示無效日期。 – satya

+0

@satya,你從'timestamp'中刪除'AM'嗎?因爲答案中的代碼有效。點擊'Run code snippet'按鈕來查看它的實際運行情況。另外,也在Firefox上。 – Ionut