簡體   English   中英

如何在Javascript中將日期格式從dd-MMM-yyyy轉換為yyyymmdd?

[英]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.

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