web-dev-qa-db-ja.com

SimpleDateFormatクラスで利用可能な日付形式は何ですか?

SimpleDateFormatクラスで利用可能な日付形式について誰にでも教えてもらえますか。

私はAPIを試しましたが、満足のいく答えを見つけることができませんでした。どんな助けも大歓迎です。

59
Abhishek_Mishra

日付と時刻の形式については、以下で詳しく説明します

SimpleDateFormat(Java Platform SE 7)-日付と時刻のパターン

nは、作成できるフォーマットの数です。 ex-dd/MM/yyyyまたはYYYY-'W'ww-uまたは、必要なパターンを実現するために文字を組み合わせて一致させることができます。パターン文字は次のとおりです。

  • G-時代指定子(AD)
  • y-年(1996; 96)
  • Y-週の年(2009; 09)
  • M-年の月(7月、7月、07)
  • w-年の週(27)
  • W-月の週(2)
  • D-年の日(189)
  • d-月の日(10)
  • F-月の曜日(2)
  • E-週の曜日名(火曜日、火曜日)
  • u-曜日(1 =月曜日、...、7 =日曜日)
  • a-AM/PMマーカー
  • H-時間(0-23)
  • k-時間(1-24)
  • K-午前/午後の時間(0-11)
  • h-午前/午後の時間(1-12)
  • m-時間単位の分(30)
  • s-分単位の秒(55)
  • S-ミリ秒(978)
  • z-一般的なタイムゾーン(太平洋標準時、PST、GMT-08:00)
  • Z-RFC 822タイムゾーン(-0800)
  • X-ISO 8601タイムゾーン(-08; -0800; -08:00)

パースします:

2000-01-23T04:56:07.000 + 0000

使用:new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

97

http://www3.ntu.edu.sg/home/ehchua/programming/Java/DateTimeCalendar.html から取得したサンプルコードをいくつか投げてみましょう。あなたはそれを理解しています。

import Java.text.SimpleDateFormat;
import Java.util.Date;

public class DateTest {
   public static void main(String[] args) {
       Date now = new Date();

       //This is just Date's toString method and doesn't involve SimpleDateFormat
       System.out.println("toString(): " + now);  // dow mon dd hh:mm:ss zzz yyyy
       //Shows  "Mon Oct 08 08:17:06 EDT 2012"

       SimpleDateFormat dateFormatter = new SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
       System.out.println("Format 1:   " + dateFormatter.format(now));
       // Shows  "Mon, 2012-10-8 at 8:17:6 AM EDT"

       dateFormatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
       System.out.println("Format 2:   " + dateFormatter.format(now));
       // Shows  "Mon 2012.10.08 at 08:17:06 AM EDT"

       dateFormatter = new SimpleDateFormat("EEEE, MMMM d, yyyy");
       System.out.println("Format 3:   " + dateFormatter.format(now));
       // Shows  "Monday, October 8, 2012"

       // SimpleDateFormat can be used to control the date/time display format:
       //   E (day of week): 3E or fewer (in text xxx), >3E (in full text)
       //   M (month): M (in number), MM (in number with leading zero)
       //              3M: (in text xxx), >3M: (in full text full)
       //   h (hour): h, hh (with leading zero)
       //   m (minute)
       //   s (second)
       //   a (AM/PM)
       //   H (hour in 0 to 23)
       //   z (time zone)
       //  (there may be more listed under the API - I didn't check)

   }

}

がんばろう!

50
Roy

ここでフォーマットを確認してください http://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html

main

System.out.println("date  : " + new classname().getMyDate("2014-01-09 14:06", "dd-MMM-yyyy E hh:mm a z", "yyyy-MM-dd HH:mm"));

method

 public String getMyDate(String myDate, String returnFormat, String myFormat)
            {
                DateFormat dateFormat = new SimpleDateFormat(returnFormat);
                Date date=null;
                String returnValue="";
                try {
                    date = new SimpleDateFormat(myFormat, Locale.ENGLISH).parse(myDate);
                    returnValue = dateFormat.format(date);
                } catch (ParseException e) {
                    returnValue= myDate;
                    System.out.println("failed");
                    e.printStackTrace();
                }

            return returnValue;
            }
5
rinuthomaz

Java.time

UPDATE

他の質問は時代遅れです。 SimpleDateFormatなどのひどいレガシークラスは、数年前に近代的なJava.timeクラスに取って代わられました。

カスタム

独自のカスタム書式設定パターンを定義するための DateTimeFormatter のコードは、SimpleDateFormatのコードと似ていますが、まったく同じではありません。必ずドキュメントを調べてください。また、多くの例についてはStack Overflowを検索してください。

DateTimeFormatter f = 
    DateTimeFormatter.ofPattern( 
        "dd MMM uuuu" , 
        Locale.ITALY 
    ) 
;

標準ISO 8601

ISO 8601 標準は、多くのタイプの日時値の形式を定義します。これらの形式はデータ交換用に設計されており、機械によって簡単に解析され、文化を超えて人間によって簡単に読み取られます。

Java.timeクラスは、文字列の生成/解析時にデフォルトでISO 8601形式を使用します。 toStringおよびparseメソッドを呼び出すだけです。書式設定パターンを指定する必要はありません。

Instant.now().toString()

2018-11-05T18:19:33.017554Z

UTCの値の場合、末尾のZはUTCを意味し、「Zulu」と発音されます。

ローカライズ

書式設定パターンを指定する代わりに、Java.timeに自動的にローカライズさせることができます。 DateTimeFormatter.ofLocalized…メソッドを使用します。

特定の地域(タイムゾーン)の人々が使用している実時間で現在の瞬間を取得します。

ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );

タイムゾーンの名前を角かっこで追加するように拡張された標準ISO 8601形式のテキストを生成します。

zdt.toString():2018-11-05T19:20:23.765293 + 01:00 [アフリカ/チュニス]

自動ローカライズされたテキストを生成します。

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );

String output = zdt.format( f );

出力:lundi 5 novembre 2018à19:20:23 heure normale d’Europe centrale

一般に、ハードコーディングされたフォーマットパターンを気にするよりも、自動ローカライズすることをお勧めします。


Java.timeについて

Java.time フレームワークはJava 8以降に組み込まれています。これらのクラスは、厄介な古い legacyJava.util.DateCalendar 、& SimpleDateFormat などの日時クラスに取って代わります。

Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行を推奨しています。

詳細については、 Oracle Tutorial を参照してください。また、Stack Overflowで多くの例と説明を検索してください。指定は JSR 31 です。

Java.timeオブジェクトをデータベースと直接交換できます。 JDBC 4.2 以降に準拠する JDBCドライバー を使用します。文字列もJava.sql.*クラスも必要ありません。

Java.timeクラスはどこで入手できますか?

ThreeTen-Extra プロジェクトは、追加のクラスでJava.timeを拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。 IntervalYearWeekYearQuartermore などの便利なクラスがあります。

2
Basil Bourque