問題タブ [java-time]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 8 - ZonedDateTime が別の ZonedDateTime と等しくない
2 つの ZonedDateTime オブジェクトを作成しましたが、それらは等しいはずです。
デバッガーでは、最初のケースの ZonedDateTimeゾーンのメンバーのクラスがjava.time.ZoneOffsetであり、2 番目の java.time.ZoneRegion であることがわかります。これにより、ZonedDateTime オブジェクトが等しくなくなります。これは紛らわしいです...何かアイデアはありますか?
java - Java 8 Date & Time API:指定された月のISO8601週数を取得するには?
これで、1日から最後の日までの期間の木曜日の数を数えるだけです。Java 8 Date & Time API を使用した 1 行のソリューションはありますか? 私はもう試した:
たとえば、2014 年 3 月 5 日の場合は 5 を返しますが、ISO8601 によると 3 月には 4 週間しかありません。
java - Localeを使用して3つの数値をLocalDateに解析する方法は?
新しいJava 8 Date and Time APIを使用する[2, 10, 2014]
など、3つの数値を解析しようとしています。LocalDate
すべてが比較的簡単に聞こえますよね?まあ、そうではないかもしれません。
追加の制約は、ロケールを考慮する必要があることです。たとえば、オランダ語とアメリカ語では異なる日付形式が使用されているためです。
私が持っている唯一の入力は3つの数字とロケールであり、出力は形式の整った日付でなければなりませんLocalDate
.
次の手順が必要になると考えています。
Locale
から3 つの数値を読み取れるコンバーターを取得します。- コンバーターを使用して、3 つの数値を に変換し
LocalDate
ます。
特にクラスで少し見回しましたDateTimeFormatter
が、日、月、年の形式を明示的に渡したいようです。これは私にとってオプションではありません。
3 つの数値 (日、月、年を任意の順序で表す) を に変換するにはどうすればよいLocalDate
ですか?
例:
オランダ語の形式:
アメリカ形式:
また、数字の概念について話していることにも注意してください。ただし、数値に 0 ~ 9 の数字以外の Unicode 文字を使用する言語にも対応するために、文字列として表す必要があります。
java - LocalDate と DateTimeFormatter が日本語ロケールで正しく機能しない
私の方法をテストしているときに奇妙な問題に遭遇しました。私の問題の具体的な例を得ることができたようです。
ja_JP_JP_#u-ca-japanese
ロケールで定義された独自の日付パターンを使用して日付を解析できないロケールを使用しています。
何か間違ったことをしているのか、それとも JDK のバグなのか疑問に思っています。
を構築するには、Locale javadocからの抜粋に従ってja_JP_JP_#u-ca-japanese
使用する必要があることに注意してください。new Locale("ja", "JP", "JP")
特殊なケース
互換性の理由から、2 つの非準拠ロケールは特別なケースとして扱われます。ja_JP_JP と th_TH_TH です。バリアントが短すぎるため、これらは BCP 47 では不適切な形式です。BCP 47 への移行を容易にするために、これらは構築中に特別に処理されます。これら 2 つのケース (およびこれらのみ) により、コンストラクターは拡張機能を生成し、他のすべての値は Java 7 より前とまったく同じように動作します。
Java では、ja_JP_JP を使用して、日本で使用されている日本語を和暦と共に表現しています。これは、Unicode ロケール キー ca ("calendar" の場合) を指定し、japanese と入力することで、Unicode ロケール拡張を使用して表現できるようになりました。Locale コンストラクターが引数「ja」、「JP」、「JP」で呼び出されると、拡張子「u-ca-japanese」が自動的に追加されます。
Java は th_TH_TH を使用して、タイで使用されるタイ語をタイ語の数字と一緒に表します。これは、Unicode ロケール キー nu (「数値」) と値 thai を指定することにより、Unicode ロケール拡張を使用して表現できるようになりました。Locale コンストラクターが引数「th」、「TH」、「TH」で呼び出されると、拡張子「u-nu-thai」が自動的に追加されます。
問題を示す特定のテスト ケース:
このコードは、英語などの他の通常のロケールでも機能します。
java - 期間に特定の日が含まれているかどうかを確認するJava 8 DateTime
to 日付の期間に 2 月 29 日が含まれているかどうかを確認したいと考えています。
私は試した:
ただしbeginDate
、 andmaturity
は型からであるLocalDate
ため、メソッド.isAfter
and.isBefore
は使用できません。
例
beginDate
15.01.2012
maturity
は 20.01.2013 です
この期間中、2月29日が存在します
解決
私は最終的に解決策を見つけました:
java - 元号と週ベースの年の違いは?
Java 8 のDateTimeFormatter
クラスには、,文字ofPattern(String pattern)
の文字列からフォーマットを定義できる, メソッドがあります。例では、紀元年と週ベースの年との違いが明確にされていません。それは何ですか?A-z
a-z
y
Y
java - 日付を間隔に切り捨てる/スパンする方法は?
Instant.truncatedTo を使用して日付を切り捨てようとしましたが、1 日以上の切り捨ては許可されていないようです。私がやりたいことは、特定の時間間隔を使用して日付を切り捨てることです。例えば:
したがって、日付を特定の時間間隔にまたがるようなものです。
私は実際にはタイムスタンプ値を使用してタイムスタンプ間隔 ((dateTimestamp/intervalTimestamp)*intervalTimestamp) で割っていましたが、月を使用する場合、月日が変わる可能性があるため固定のタイムスタンプ値はありません。