2016-07-11 11 views
0

現在、ユーザーの生年月日をミリ秒単位で格納しています(1970年1月1日以降)。すべての国で同じ生年月日であることを保証する必要がありますか、それとも11月11日が国X、11月12日が国Yであることが一般的ですか?生年月日:すべての地元で同じ生年月日ですか?

各国で同じ生年月日を使用するのが一般的である場合は、どの国の各月の正確な同じ日を指しているのですか。

+1

あなたはどの言語を使用していますか? –

+0

私はミリ秒を格納するのにUTCを使用します。 UIに表示されたときには、それらはロケール時間に転送されます。 – Mulgard

+0

OK、あなたはUIのものをやっていることを知っています。 JavaScript?たぶん角度またはJQueryですか?私は近づいていますか? –

答えて

3

少数の人々は、時刻彼らの誕生を知っている時間帯を無視します。だから、いいえ、その詳細レベルは一般的には追跡されません。パスポートなどで出生時と出生時のゾーンが決して見えません。時間帯なしの時間帯なしで、日付のみの値を追跡します。

バーテンダーや国境管理エージェントなどは、現時点の現在の日付を使用して年齢を計算します。時刻を考慮したり、タイムゾーンを調整したりすることはありません。部分日差を切り捨て、無視することを検討してください。

時間帯を正確に調整するには、時刻がである必要があります。時間がなければ、出産が起きた可能性があります。

たとえば、24日にパリで真夜中(UTCより1時間または2時間前)に発生する出生は、モントリオールでは23日(UTCから4時間または5時間遅れ)の「昨日」です。しかし、その誕生が24日の06:00に起こった場合、その日付はパリ&モントリオールでは同じですが(24日)、バンクーバーBCとシアトルでは「昨日」(23日)、クロックは7時間または8時間遅れていますUTC。

SQL

SQLでは、標準のDATE型に類似したデータ型を使用します。 JavaではJavaの

は、LocalDateタイプを使用します。誕生日の祝いの月と日を繰り返し表すには、MonthDayクラスを使用してください。

データベースと対話するため、JDBC 4.2に準拠ドライバはPreparedStatementgetObject & setObject方法によってLocalDateを直接操作することができなければなりません。そうでない場合は、古いjava.sql.Dateを使用してください。古いクラスに追加された新しいメソッドは、変換を容易にします。

ISO

日時値の文字列表現を生成8601は、ISO 8601標準などYYYY-MM-DD、エクスビボで定義されたフォーマットを使用:1960-07-11。年間使用しない日付の場合--MM-DD、例:--07-11。 Javaのjava.timeクラスは、文字列の解析と生成時にデフォルトでISO 8601形式を使用します。

時刻強制

何らかの理由であなたは、日付時刻フィールドに日付のみの値を置くことを余儀なくされている場合は、あなたには、いくつかの任意の時刻を設定する必要があります。正午は一つの可能​​性です。時間の部分を最初の瞬間に設定することをお勧めします。その日の

最初の瞬間は

は最初の瞬間はいつもない00:00:00であることに注意してください。夏時間(DST)やその他の異常は、いくつかのタイムゾーンで真夜中に影響します。だから今日の最初の瞬間は01:00:00かもしれません。 Javaは、特定のタイムゾーンに適切な日の最初の瞬間を判断することができます。

ZoneId zoneId = ZoneId.of("America/Montreal"); 
LocalDate today = LocalDate.now(zoneId); 
ZonedDateTime startOfToday = today.atStartOfDay(zoneId); 
1

生年月日を表示するときに、選択した生年月日と使用するタイムゾーンを解釈する時間帯を決定するのはあなた次第です。私の意見では、生年月日を読み込み可能な形式に変換して保存するとき、出生地のタイムゾーンを(使用したい場合は)常に使用することが理にかなっています。それ以外の場合は、GMTや他のタイムゾーンをいつでも使用できます。これにより、すべての国のすべてのユーザーに同じ生年月日が表示されますが、混乱を避けるために、日付表記にタイムゾーンを追加することをお勧めします。もちろん、ユーザー定義のタイムゾーン(おそらくユーザーのアカウントのタイムゾーン)を使用して、生年月日を格納してレンダリングするタイムスタンプを作成するときに、GMTに基づいて日付を解釈することもできます。この場合、日付(および生年月日を含めると時間)は各ユーザーごとに異なるように見えます。