TL。 DR
ZonedDateTime.parse (
"Wed Oct 19 14:34:26 BRST 2016" ,
DateTimeFormatter.ofPattern ("EE MMM dd HH:mm:ss z uuuu")
)
.toLocalDate()
.format(
DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)
.withLocale(Locale.UK)
)
19/10/16
あなたはjava.timeクラスに取って代わら面倒な古い日付時刻クラス、今の遺産を、使用している
java.time
。
使用リアルタイムゾーン
彼らは真の時間帯ではないとして標準化された、などBRST
またはEST
またはIST
など3-4文字の省略形ではなく、使用しないでください、とさえ一意ではありません(!)。
はcontinent/region
の形式でproper time zone nameを指定します。たとえば、America/Sao_Paulo
です。
このような場合、以下のコードは動作しますが、私はではありません。は入力などのデータの交換をお勧めしていません。データソースへの影響がある場合は、標準ISO 8601形式を使用して日付/時刻値のデータ交換に変更します。
2016-10-19T14:34:26から02:00
さらに良い
、交換列ZonedDateTime
によって作成され、角括弧内の時間帯名を付加することによりISO 8601フォーマットを拡張します。
2016-10-19T14:34:26から02:00 [アメリカ/ Sao_Paulo]
すべてのベスト、通常、データを交換する前に、UTCへのそのような値を変換することです。 java.timeでは、toInstant().toString()
を呼び出してこれを行います。通常、UTCで作業するのが最善で、ユーザーにプレゼンテーションなどの必要な場合にのみタイムゾーンを適用します。
2016-10-19T16:34:26Z
例コード
String input = "Wed Oct 19 14:34:26 BRST 2016";
DateTimeFormatter f = DateTimeFormatter.ofPattern ("EE MMM dd HH:mm:ss z uuuu");
ZonedDateTime zdt = ZonedDateTime.parse (input , f);
zdt.toString():2016-10-19T14:34:26から02: 00 [America/Sao_Paulo]
同じ時刻をUTCで表示するには、Instant
を抽出します。
Instant instant = zdt.toInstant();
instant.toString():2016-10-19T16:34:26Z
LocalDate
クラスは、時間日の時間帯無し無し日付のみの値を表します。
LocalDate ld = zdt.toLocalDate();
ld.toString():2016年10月19日
DateTimeFormatter
クラスのスタックオーバーフローを検索し、他の形式の文字列を生成します。一般的に、java.timeを自動的にローカライズするには最適です。
FormatStyle
文字列がどのくらいか、省略をする必要があります決定するために:、ローカライズ指定するには 。
Locale
(a)日の名前、月の名前などを翻訳するための人間言語、および(b)略語、大文字、句読点などの問題を決定する文化的な基準を決定する。
例:
Locale l = Locale.CANADA_FRENCH ; // Or Locale.US or Locale.ITALY etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(l);
String output = ld.format(f);
java.timeについて
java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date
,.Calendar
,& java.text.SimpleDateFormat
などの面倒な古いlegacy日時クラスに取って代わります。
にあるJoda-Timeプロジェクトは、java.timeへの移行を推奨しています。
詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。仕様はJSR 310です。
ここで、java.timeクラスを取得するには?
ThreeTen-Extraプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、Interval
、YearWeek
、YearQuarter
、moreなどの便利なクラスがあります。
私はこのコードを試しました、それは動作します、私は例外と私のロケール 'en_IN'を得ませんでした – Saravana
あなたは' Locale'ですか? – Saravana
@Saravana Brazil – AND4011002849