2016-12-04 7 views
-2

コンピュータがjavaを使用してコードで日付形式を変更するように強制しますか?私のアプリは指定されたフォーマットとディスク上のファイルを使って文字列に日付を保存します。選択された形式は文字列変数にのみ影響しますが、システムの地域設定を強制的に使用するためファイルには影響しません。私はロケールを設定しようとしたか、またはSimpleDateFormat()でデフォルトロケールを変更しようとしましたが、それは行っていませんでした。私は、システム設定がStringに日付パターンを強制する理由を理解していません。どんな説明も認められるでしょう。システムの日付形式

+2

あなたのコードを教えてください。しかし、その前に、[最小限で完全で検証可能な例を完了する方法](/ help/mcve)を参照してください。 –

+0

この質問は意味をなさない。はるかに詳細とサンプルコードを提供する。ファイルにテキストとして日付/時刻値を書き込む場合は、アプリから抽出したコードスニペットで簡単にデモンストレーションする必要があります。 –

+1

ようこそスタックオーバーフロー!良い質問をするのを助けるために私たちの[SO Question Checklist](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)をよく読んで、良い答えを得てください。 –

答えて

1

あなたの質問は全く明確ではありません。 「システム日付形式」のようなものはありません。

避けレガシー日時クラス

のJavaの最初のバージョンに同梱古い日時のクラスは、面倒な混乱、および欠陥のあることが証明されています。 java.util.Date.Calendar、およびSimpleDateFormatを避けてください。これらは現在、古くからjava.timeクラスに取って代わられています。

ISO 8601

テキストとしてファイル内のディスクへの日時の値をシリアル化している場合は、標準ISO 8601形式を使用しています。これらのフォーマットは、文化を超えて直感的であり、明確で、新しいインターネットや情報標準を含む人気が高まっています。

java.timeクラスは、日付時刻値の文字列を解析/生成するときに、デフォルトでISO 8601形式を使用します。

Instantクラスを使用して、ナノ秒までの解像度で現在の瞬間をUTCで取得します。

Instant instant = Instant.now(); 

標準ISO 8601形式のテキストとしてその瞬間を表す文字列を生成します。

String output = instant.toString(); 

2016-12-04T06:12:13.455Z

簡単には再びオブジェクトに解析します。

Instant instant = Instant.parse("2016-12-04T06:12:13.455Z"); 

通常、UTCで作業するのが最適ですが、必要に応じてその瞬間をタイムゾーンに調整することができます。

ZoneId z = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = instant.atZone(z); 
String outputZdt = zdt.toString(); 

2016-12-04T01:12:13.455から05:00 [アメリカ/モントリオール]

live code at IdeOne.comを参照してください。 java.timeについて


java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古いlegacy日時クラスなどjava.util.DateCalendar、& SimpleDateFormatに取って代わります。

Joda-Timeプロジェクトは、今maintenance modeで、java.timeへの移行をアドバイスします。

詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。仕様はJSR 310です。

ここで、java.timeクラスを取得するには?

  • Java SE 8SE 9以降
    • 内蔵しています。
    • バンドルされた実装の標準Java APIの一部です。
    • Java 9には、いくつかのマイナーな機能と修正が加えられています。
  • Java SE 6SE 7
    • java.time機能の多くはThreeTen-BackportのJava 6 & 7に戻って、移植されます。
  • Android
    • ThreeTenABPプロジェクトはThreeTen-バックポート具体的にAndroidのため(上記)を適応させます。
    • How to use…を参照してください。

ThreeTen-Extraプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。

+0

Basilさん、ありがとうございました。あなたはそれを明確にしました。私は多くの読書と練習が必要です。私はSystem Date Formatによって、ユーザーがOSの日付と時刻のフォーマットを設定したコントロールパネルの設定を意味します。その形式は、システム上で設定したファイルのように、JVM環境の外のすべてをオーバーライドするようです。あなたのコメントが電子メールで通知されなかったため、私は早く返信しなかったことを申し訳ありません。 –