web-dev-qa-db-ja.com

SimpleDateFormatは24時間の日付を返します:12時間の日付を取得する方法は?

現在の時刻をミリ秒単位で指定し、12時間形式で保存したいのですが、このコードでは24時間形式の時間を取得しています。

long timeInMillis = System.currentTimeMillis();
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(timeInMillis);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy HH:mm:ss a");
dateforrow = dateFormat.format(cal1.getTime());

誰もが希望する結果を得るための修正を提案できますか?

45
aneela

HHhhに変更します

long timeInMillis = System.currentTimeMillis();
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(timeInMillis);
SimpleDateFormat dateFormat = new SimpleDateFormat(
                                "dd/MM/yyyy hh:mm:ss a");
dateforrow = dateFormat.format(cal1.getTime());

dd/mm/yyyy-は、monthではなくminutesを提供することに注意してください。

129
MysticMagicϡ

SimpleDataFormat JavaDoc を参照:

Letter | Date or Time Component | Presentation | Examples
---------------------------------------------------------
   H   |  Hour in day (0-23)    |    Number    |    0
   h   |  Hour in am/pm (1-12)  |    Number    |    12
41
Eng.Fouad

私もこれに苦労して再会します。 H対h、24時間対12時間!

5
lwpro2

こんにちは、私はうまく動作する以下のコードをテストしました:

    long timeInMillis = System.currentTimeMillis();
    Calendar cal1 = Calendar.getInstance();
    cal1.setTimeInMillis(timeInMillis);
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss a");
    dateFormat.format(cal1.getTime());
3
Bhavdip Sagar

はい、HHの代わりにhhを使用するだけで問題が解決することを確認しました。

これから変更:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm aa");

これに:

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");

AM/PMの保存と処理に煩わされたくない場合は、HHを使用して時間を保存できます。次に、取得するときにhhを使用します。

3
Philip

このように試すことができます

  Calendar c= Calendar.getInstance();

  SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");
  String str=sdf.format(c.getTime());
1
Manjeet Brar

コードに従うだけ

public static String getFormatedDate(String strDate,StringsourceFormate,
                                     String destinyFormate) {
    SimpleDateFormat df;
    df = new SimpleDateFormat(sourceFormate);
    Date date = null;
    try {
        date = df.parse(strDate);

    } catch (ParseException e) {
        e.printStackTrace();
    }

    df = new SimpleDateFormat(destinyFormate);
    return df.format(date);

}

そして、そのような関数に値を渡します、

getFormatedDate("21:30:00", "HH:mm", "hh:mm aa");

または、このドキュメントを確認してください SimpleDateFormat StringsourceFormateおよびdestinyFormateの場合。

0
Nazmus Saadat
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss a");

hhの代わりにHHを使用します

0
Ram kiran