web-dev-qa-db-ja.com

Androidを使用して、時刻値を「hh:mm Am / Pm」の形式に変換します

StringTokenizerを使用して「2013-02-27 06:06:30」のようなデータベースから日付値を取得しています

String startTime = "2013-02-27 06:06:30";

StringTokenizer token = new StringTokenizer(startTime);
String date1 = token.nextToken();  
String time1 = token.nextToken(); 

そして、時間1に私は06:06:30の結果を得ています

次のように、String型の別の変数に再保存できますか?

String displayValue = "06:06 AM";

そして、time1変数の値が

String time = 16:00:00;

次に、次のように変換する必要があります。

String displayValue = "04:00 PM";
31
Android learner

こんなふうに答えてもらいました。

startTime = "2013-02-27 21:06:30";
StringTokenizer tk = new StringTokenizer(startTime);
String date = tk.nextToken();  
String time = tk.nextToken();

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt;
try {    
    dt = sdf.parse(time);
    System.out.println("Time Display: " + sdfs.format(dt)); // <-- I got result here
} catch (ParseException e) {
    e.printStackTrace();
}
26
Android learner

これを試して..

Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
50
Murugan

最初に、文字列時間を取得するためにStringTokenizerを使用する必要はありません。次のようにstartTimeを渡すだけです:

// Get date from string
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormatter.parse(startTime);

// Get time from date
SimpleDateFormat timeFormatter = new SimpleDateFormat("h:mm a");
String displayValue = timeFormatter.format(date);

// Done!
15
maohieng

これを試して

 String time = "22:35";

try {
     SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
     Date dateObj = sdf.parse(time);
    System.out.println(dateObj);
    System.out.println(new SimpleDateFormat("K:mm").format(dateObj));
} catch (final ParseException e) {
    e.printStackTrace();
}

このリンクをトレースしてください http://developer.Android.com/reference/Java/text/SimpleDateFormat.html

9
dharam
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);

出力2.00 a.m.

 Date dt = new Date(date1);
 SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
 String time1 = sdf.format(dt);

出力2.00 AM

6
saravanan

SimpleDateFormat のようなDateFormatの使用をお勧めします

try {
    String timeLong = "2013-02-27 06:06:30";
    String timeShort = "16:06 AM";
    SimpleDateFormat formatLong = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
    SimpleDateFormat formatShort = new SimpleDateFormat("hh:mm aa", Locale.US);
    Log.v("out", formatShort.format(formatLong.parse(timeLong)));
    Log.v("out", formatShort.format(formatShort.parse(timeShort)));
} catch (ParseException e) {
    e.printStackTrace();
}

私は今日疲れており、このコードに何かが欠けているように感じているので、後で修正するかもしれませんが、機能し、非推奨のDateクラスを(直接)呼び出しません。

5
Sam

1現在の時刻を09:30 PMの形式で表示する必要があると仮定します。これはかなり簡単なアプローチです。現在の時間にそれを必要としない場合でも、要件に以下のDateFormatを使用できるはずです。

Calendar cal = Calendar.getInstance();
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
String formattedTime = outputFormat.format(cal.getTime());

2注:次のフォーマッターを使用して、同じ時間を24時間形式で表示できます(21:30 )。

new SimpleDateFormat("HH:mm");

3ただし、最初のポイントと同じ形式を構築する場合は、次のコードをJavaの抑止として使用するのが最適ですStringTokenizer。これについては、こちらで読むことができます http://docs.Oracle.com/javase/6/docs/api/Java/util/StringTokenizer.html

これがお役に立てば幸いです!

    String startTime = "2013-02-27 21:06:30";
    String[] parts = startTime.split(" ");

    DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
    SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss");


    try {
        Date dt = parseFormat.parse(parts[1]);
        System.out.println(outputFormat.format(dt));
    } catch(ParseException exc) {
        exc.printStackTrace();
    }
5
Hamzeen Hameem

次のパターンを使用するだけで、期待どおりの結果が得られます

    try {
        String time = "06:06:30";
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
        Date dt = sdf.parse(time);

        SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
        String formatedTime = sdfs.format(dt);

        Log.v("parseTime", formatedTime);

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

ハッピーコーディング:)

2
Monir Zzaman

On Androidまた、 DateFormat があります

1
yoah

選択した回答には、間違った時間を表示するという問題がありました。時間が12:30:の場合、代わりに12:30 AMと表示されます12:30 PM。以下のコードは、問題を克服するのに役立ちます。

SimpleDateFormat sdf = new SimpleDateFormat("KK:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");

    Date dt1 = null;

    try {
        dt1 = sdf.parse("12:00:00");
        Log.i("Time in Am Pm  ", sdfs.format(dt1));

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