2016-11-02 52 views
0

我想在javascript中獲取以下格式的日期格式16-SEP-16 12.00。我無法弄清楚如何做到這一點。我需要將其作爲REST API請求的查詢參數發送。以特定格式獲取日期/時間戳

目前,所有我能想到的這個格式化日期分別像

var date = new Date(); 
 
var dt = date.getUTCDate() + '-' + date.getUTCMonth() + '-' + (date.getUTCFullYear() - 2000) + ' ' + date.getUTCHours() + '.' + date.getUTCMinutes(); 
 
console.log(dt);

我有一個問題,它的月份是一個數字,而不是像SEP的簡寫。

也有任何簡單的方法來實現這一點。

感謝您的幫助。

+0

有沒有真正的速記像PHP和SQL,但也有方法,在短短的返回日期的各部分對任何formatyou可能希望:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date –

+0

@Pamblam問題是,我有一個oracle數據庫,它使用月份的簡寫和從我需要的前端至 發送與查詢參數相同的格式。另外,我跟着你建議實現我迄今爲止所做的相同的鏈接 –

+0

提供了兩種類型的解決方案,希望你喜歡它 –

回答

1

如果你沒有任何問題,使用第三方庫,你可以使用Moment.js,它是一個美麗的對於日期升圖書館和格式化

在moment.js,您可以將其格式化爲以下

var day = moment("2016-11-01"); 
 
console.log(day); 
 
console.log(day.format("DD-MMM-YYYY HH:MM"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.2/moment.js"></script>

希望這有助於

+0

我沒有任何問題使用第三方庫,但它會更好,如果我可以在javascript中實現它 –

+0

因爲我必須在我的項目中的多個位置格式化日期。我終於訴諸使用moment.js。感謝幫助。我接受了你回答 –

1

var monthNames = [ 
 
    "Jan", "Feb", "Mar", 
 
    "Apr", "May", "Jun", "Jul", 
 
    "Aug", "Sep", "Oct", 
 
    "Nov", "Dec" 
 
]; 
 

 

 
var date = new Date(); 
 
var dt = date.getUTCDate() + '-' + monthNames[date.getUTCMonth()] + '-' + (date.getUTCFullYear() - 2000) + ' ' + date.getUTCHours() + '.' + date.getUTCMinutes(); 
 
console.log(dt);

不使用一個月陣列您可以使用下面的解決方案

var date = new Date(); 
 
Date.prototype.monthName = function() { 
 
    return this.toUTCString().split(' ')[2] 
 
}; 
 
var dt = date.getUTCDate() + '-' + date.monthName()+ '-' + (date.getUTCFullYear() - 2000) + ' ' + date.getUTCHours() + '.' + date.getUTCMinutes(); 
 
console.log(dt); 
 
document.write(dt);

+0

這是一個答案,但我不喜歡這個 –

+0

@ShubhamKhatri:答案更新時未使用月份數組 –

+0

由* toUTCString *返回的字符串是依賴於實現的,因此假定它將包含特定的月份名稱地方不是一個好主意。 – RobG

1

失眠讓我寫這個..

它將format方法添加到日期對象,無需任何第三方庫和r根據給定的簡寫形式處理格式化的日期。

我基於它PHP's date shorthand,你可以參考。

Date.prototype.format = function(format) { 
    var months = ["January", "February", "March", "April", "May", "June", 
    "July", "August", "September", "October", "November", "December" 
    ]; 
    var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; 
    format = format.replace(/y/g, ("" + this.getFullYear()).substring(2)); 
    format = format.replace(/Y/g, "" + this.getFullYear()); 
    format = format.replace(/m/g, ("00" + (this.getMonth() + 1)).substr(-2, 2)); 
    format = format.replace(/F/g, months[this.getMonth()]); 
    format = format.replace(/M/g, months[this.getMonth()].substring(0, 3)); 
    format = format.replace(/n/g, "" + (this.getMonth() + 1)); 
    format = format.replace(/t/g, "" + new Date(this.getFullYear(), this.getMonth() - 1, 0).getDate()); 
    format = format.replace(/D/g, days[this.getDate()].substr(0, 3)); 
    format = format.replace(/d/g, ("00" + this.getDate()).substr(-2, 2)); 
    format = format.replace(/j/g, this.getDate()+""); 
    format = format.replace(/l/g, days[this.getDate()]); 
    format = format.replace(/w/g, this.getDay()); 
    format = format.replace(/a/g, this.getHours() > 11 ? "pm" : "am"); 
    format = format.replace(/A/g, this.getHours() > 11 ? "PM" : "AM"); 
    format = format.replace(/g/g, "" + (this.getHours() > 11 ? this.getHours() - 11 : this.getHours() + 1)); 
    format = format.replace(/G/g, "" + (this.getHours() + 1)); 
    format = format.replace(/h/g, ("00" + (this.getHours() > 11 ? this.getHours() - 11 : this.getHours() + 1)).substr(-2, 2)); 
    format = format.replace(/H/g, ("00" + (this.getHours() + 1)).substr(-2, 2)); 
    format = format.replace(/i/g, ("00" + this.getMinutes()).substr(-2, 2)); 
    format = format.replace(/s/g, ("00" + this.getSeconds()).substr(-2, 2)); 
    return format; 
}; 

例子..

// 11/02/16 2:17 AM 
var d = (new Date()).format("m/d/y g:i A"); 

// November 2, 2016, 2:17 am 
var d = (new Date()).format("F j, Y, g:i a") 

And a fiddle

+0

在什麼情況下會需要「00」+ this.getDate()?應該對無效日期進行測試,例如:'if(isNaN(this))return this.toString()'。 ;-) – RobG

+0

在它前面放置2個零,然後得到2個右側字符的子字符串只是一個簡單的方法來填充零的數字。試試看,你會看到。在什麼情況下日期對象會成爲NaN? @RobG –

+0

感謝您的幫助。今後提及但肯定不適合當前的工作。 –