![](/img/trans.png)
[英]Convert EST timezone date to 'dd-mmm-yyyy' format in JavaScript
[英]How to convert date format from dd-MMM-yyyy to yyyymmdd in Javascript?
我有一個帶有日期選擇器的輸入文本框,當用戶選擇特定日期時,日期說09-Dec-2014將應用於輸入文本框。 提交時,我希望將日期以yyyymmdd格式傳遞給服務器,例如20141209 。 那么如何在javascript中轉換日期格式呢?
var date = new Date(Date.parse('09-Dec-2014'));
上面的代碼給了我“無效日期”。
在網上搜索解決方案,但無法找到我的問題。
有人可以幫我嗎?
謝謝。
var date = '09-Dec-2014'.split("-");
var newDate=date[2]+date[1]+date[0];
可能真的很快,拆分並生成您自己的東西。
感謝 Danyal Sandeelo 和 Jeeva Jsb 的回答。
我能夠使用下面給出的代碼以yyyymmdd格式獲取日期。
var date = '09-Dec-2014'.split("-");
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
for(var j=0;j<months.length;j++){
if(date[1]==months[j]){
date[1]=months.indexOf(months[j])+1;
}
}
if(date[1]<10){
date[1]='0'+date[1];
}
var formattedDate = date[2]+date[1]+date[0];
問題在於您將所需日期傳遞給 Date() 對象的格式。
出於某種原因,瀏覽器出人意料地不支持日期格式“yyyy-mm-dd”,因此失敗。
所有瀏覽器都絕對支持以下格式,並建議堅持使用其中一種格式以避免錯誤:
var d = new Date(2011, 01, 07); // yyyy, mm-1, dd
var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
var d = new Date("02/07/2011"); // "mm/dd/yyyy"
var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"
var d = new Date(1297076700000); // milliseconds
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UTC
alert(d.getFullYear()+""+(d.getMonth()+1)+""+((d.getDate()<10)?"0"+d.getDate():d.getDate()));
參考 :
http://biostall.com/javascript-new-date-returning-nan-in-ie-or-invalid-date-in-safari
給定的答案僅適用於與格式完全匹配的日期,而我需要一個適用於有時不遵循該格式的用戶輸入的解決方案,因此我創建了一個適用於不區分大小寫的月份和月份的函數,例如一月或空格或連字符或斜線分隔符。 此外,如果沒有給出日期或月份,它只返回日期。 該函數返回 2004-12-30 表示 2004 年 12 月 30 日,返回 1893 表示 1893 年 1 月。輸入字符串應該被修剪,因為第一個和最后一個字符需要是數字。
const dateStr = str => {
const months = {'jan': "01", 'feb': "02", 'mar': "03", 'apr': "04", 'may': "05", 'jun': "06", 'jul': "07",
'aug': "08", 'sep': "09", 'oct': "10", 'nov': "11", 'dec': "12"};
let year = str.match(/\d{4}$/);
let month = str.match(/[A-Za-z]{3}/);
let day = str.match(/^[1-9][0-9]?/);
let mm, dd;
if(day && month && year) {
mm = months[month[0].toLocaleLowerCase()];
dd = day[0].padStart(2, '0');
console.log("Input: " + str + ". date: " + year[0] + "-" + mm + "-" + dd);
} else if(year){
console.log("Input: " + str + ". date: " + year[0]);
}
else {
return false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.