JavaScript中將字串轉換為Date型資料

來源:互聯網
上載者:User

Date類型在指令碼語言中經常使用,我們通常用下面的方式聲明一個Date變數:
var dt=new Date();
dt為當前系統時間,但許多時候,我們需要將一個字串轉換為Date型,而中國人的習慣是年月日時分秒格式,如:
var strDate='2010-10-5 12:30:5';
年月日中間的分隔字元還可能是“.”或“/”等,由於程式員輸入錯誤或配置系統時不規範,中間可能出現多餘的空格等,因此,我們需要寫一個函數來將非標準輸入轉換為標準輸入,只是要求使用者按年月日時分秒的順序輸入,中間的任何分隔字元我們都承認,即使首尾出現了非數位字元,也可以自動忽略,我們按如下思路進行:
1.將字串中的數字部分提取到數組中
2.以當前系統時間產生一個數組
3.依次用第1步中的數組替換第2步數組中的元素
4.產生日期格式
下面我們對Date類型進行擴充:
Date.CreateDateTime = function(s)
{
    var strInfo = s.match(//d+/g);
    var d = new Date(), r = [d.getFullYear(), d.getMonth() + 1, d.getDate(), 0, 0, 0];

    for (var i = 0; i < 6 && i < strInfo.length; i++)
        r[i] = strInfo[i].length > 0 ? strInfo[i] : r[i];
    return new Date(r[0],r[1]-1,r[2],r[3],r[4],r[5]);
};
接下來我們測試一下
//定義一個變數s
var s='2010-12-5 12:00:01';
alert(Date.CreateDateTime(s));
可以得到正確的結果,其中,s可以很隨意地寫,如:
2010.12
2010.12.1 2:
等等,只要按照年月日時分秒順序,分隔字元用除數字外的任一字元(一個以上)即可,甚至設定下面的變數仍然可以正確解析:
    var ss = 'aaa2010+asdfsd10llasd-+5!@#03s:5:fff8aa12ss05xyz';
    alert(Date.CreateDateTime(ss));

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.