1

ユーザーにDDMMYYYを入力して、誕生日を取得することにしました。そのデータからjavascriptでUNIXタイムスタンプを作成するにはどうすればよいですか?

また、UNIXタイムスタンプを取得したら、それを英語で表示するにはどうすればよいですか。つまり、2000年1月5日月曜日ですか。

私はPHPでそれを簡単に行うことができます、私はjavascriptの関数を知らないだけです。

4

6 に答える 6

1

これは、の入力には注意が必要DDMMYYYYです。ユーザーが数字を見逃したり、単数の前に先頭を付けなかったりすると、0計算全体が失敗するためです。生年月日入力に最適な(そして最も一般的な方法)のは、日付、月、年の3つのドロップダウンメニューです。これにより、JavaScript形式で日付を簡単に計算できるようになります。

var date = new Date($('year').val(), $('month').val(), $('day').val());

alert(date.toDateString());

これは、特に異なる日付形式を使用するロケールのユーザーにとって、ユーザーが無効な日付を入力できないため、UXの観点からは優れています。

于 2012-08-02T11:03:21.343 に答える
0

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?

于 2012-08-02T11:43:49.310 に答える
0

これは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/

于 2012-08-04T00:11:52.707 に答える
0

サブストリングを使用して日、月、年を取得し、JavaScriptで新しいDateオブジェクトを作成できます。varux = new Date(year、month、day).getMilliseconds / 1000;

于 2012-08-02T11:03:02.897 に答える
0
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");

短所:少し冗長です。長所:これほど単純なものには外部依存関係はありません。

于 2012-08-04T00:19:35.863 に答える
-1

Date.jsは、次のような任意の形式でユーザー入力を解析できる優れたサードパーティライブラリです。

セパレータがないと、これを行うのは少し難しいかもしれません。日、月、年を抽出する場合は、Date.jsがエレガンスを提供します。

var dl = new Date(2007, 0, 1);
var unixTimeStamp = dl.valueOf()/1000;
var customDateString = dl.toString('dddd dd MMM yyyy');

ここで実際の動作を確認してください

于 2012-08-02T11:08:22.737 に答える