我決定讓用戶輸入DDMMYYY來獲得他們的生日。如何從這些數據在JavaScript中創建UNIX時間戳?JavaScript從DDMMYYYY做出時間?
另外,一旦我有unix時間戳,我該如何顯示它英語,即2000年1月5日星期一?
我可以很容易地做到這一點,我只是不知道在JavaScript中的功能。
我決定讓用戶輸入DDMMYYY來獲得他們的生日。如何從這些數據在JavaScript中創建UNIX時間戳?JavaScript從DDMMYYYY做出時間?
另外,一旦我有unix時間戳,我該如何顯示它英語,即2000年1月5日星期一?
我可以很容易地做到這一點,我只是不知道在JavaScript中的功能。
您可以使用子字符串來獲取Day,Month和Year,然後在javascript中創建一個新的Date對象: var ux = new Date(year,month,day).getMilliseconds/1000;
這對於輸入DDMMYYYY
將會很棘手,因爲如果用戶遺漏了一位數字,或者沒有以前導0
作爲單數的前綴,它將會丟掉整個計算。出生日期輸入的最佳(也是最流行的方式)是日期,月份和年份的3個下拉菜單。那麼這將讓你輕鬆工作的日期出一個javascript格式:
var date = new Date($('year').val(), $('month').val(), $('day').val());
alert(date.toDateString());
這將是從UX的角度更好,因爲它不允許用戶放在一個無效的日期,特別是對那些來自使用不同日期格式的語言環境的用戶。
是的,我正在讀這篇文章,這是我的第一選擇,但正如有人指出的,我傾向於同意 - 它向下滾動列表並選擇三個不同的值而煩躁和煩人。每個人都可以很好地輸入數字。我的計劃是通過先在javascript中計算日期來驗證日期,並隨時更改DIV以顯示他們正在輸入的內容,然後快速仔細檢查,以確認用戶他們做得正確。 – Chud37 2012-08-02 11:08:52
另一點,如果贊成這是用戶不必猜測使用什麼日期格式,並且沒有地方混淆。特別是你使用的年份最後一年(因爲DDMMYYYY和MMDDYYY都是常見的)。 – WhyNotHugo 2012-08-04 00:22:50
您需要使用一些圖書館,或代碼的東西你自己,因爲內置在JavaScript日期解析和編寫例程非常有限。那裏使用的格式基本上取決於系統。
我有點偏見(作爲「Going Global with JavaScript and Globalize.js」的作者),但我仍然推薦使用Globalize.js,即使在你真的不是全球化但只使用英語符號的情況下。畢竟,在日期上使用英文標記是本地化的一種形式。
例子:
<script src=globalize.js></script>
<script>
var birthDateString = "09Feb1952"; // just a test case
var birthDate =
Globalize.parseDate(birthDateString, 'ddMMMyyyy');
if(!birthDate) {
alert('Error in birth date!'); // replace by suitable error handling
}
else {
var unixTimeStamp = Math.round(birthDate.getTime()/1000);
document.write(unixTimeStamp + "<br>");
document.write(Globalize.format(birthDate, 'dddd d MMM yyyy'));
}
</script>
這將結束與結果「星期六1952年2月9日」,這是不完全的形式要求的,所以如果你真的想要的形式,你會需要一些額外的邏輯添加後綴「th」,「st」,「nd」或「rd」。
關於UNIX時間戳與JavaScript的Date對象,看到回答以下問題How do you get a timestamp in JavaScript?
這是很容易做到moment.js。
var birthday = moment("10071986", "DDMMYYYY");
var unix = birthday.unix();
var humanized = birthday.format("dddd Do MMM YYYY");
這裏是一個工作jsfiddle。 http://jsfiddle.net/timrwood/rXArM/
function dateFromStr(input) {
var year, month, day;
year = parseInt(input.substr(4,4));
month = parseInt(input.substr(2,2));
day = parseInt(input.substr(0,2));
return new Date(year, month, day);
}
dateFromStr("03082012");
缺點:有點冗長。 優點:對於像這樣簡單的事情,無需外部依賴。
Date.js已經維持了5年。這是錯誤的,並覆蓋了很多原生的'Date.prototype'方法,這使得在生產中使用它很危險。 – timrwood 2012-08-04 00:14:05
Date.js有**糟糕的**設計問題,如上所述,並且沒有形成。此外,不鼓勵多個'var'語句。 – WhyNotHugo 2012-08-04 00:21:29