ユーザーにDDMMYYYを入力して、誕生日を取得することにしました。そのデータからjavascriptでUNIXタイムスタンプを作成するにはどうすればよいですか?
また、UNIXタイムスタンプを取得したら、それを英語で表示するにはどうすればよいですか。つまり、2000年1月5日月曜日ですか。
私はPHPでそれを簡単に行うことができます、私はjavascriptの関数を知らないだけです。
ユーザーにDDMMYYYを入力して、誕生日を取得することにしました。そのデータからjavascriptでUNIXタイムスタンプを作成するにはどうすればよいですか?
また、UNIXタイムスタンプを取得したら、それを英語で表示するにはどうすればよいですか。つまり、2000年1月5日月曜日ですか。
私はPHPでそれを簡単に行うことができます、私はjavascriptの関数を知らないだけです。
これは、の入力には注意が必要DDMMYYYY
です。ユーザーが数字を見逃したり、単数の前に先頭を付けなかったりすると、0
計算全体が失敗するためです。生年月日入力に最適な(そして最も一般的な方法)のは、日付、月、年の3つのドロップダウンメニューです。これにより、JavaScript形式で日付を簡単に計算できるようになります。
var date = new Date($('year').val(), $('month').val(), $('day').val());
alert(date.toDateString());
これは、特に異なる日付形式を使用するロケールのユーザーにとって、ユーザーが無効な日付を入力できないため、UXの観点からは優れています。
JavaScriptの組み込みの日付解析および書き込みルーチンは非常に制限されているため、ライブラリを使用するか、自分でコーディングする必要があります。そこで使用されるフォーマットは基本的にシステムに依存します。
私は(「JavaScriptと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」。
Regarding UNIX time stamp vs. JavaScript Date objects, see answers to question 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/
サブストリングを使用して日、月、年を取得し、JavaScriptで新しいDateオブジェクトを作成できます。varux = new Date(year、month、day).getMilliseconds / 1000;
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");
短所:少し冗長です。長所:これほど単純なものには外部依存関係はありません。