簡體   English   中英

使用Android將時間值轉換為格式“hh:mm Am / Pm”

[英]Convert time value to format “hh:mm Am/Pm” using Android

我使用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";

試試這個..

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

我得到了這樣的回答。

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();
}

首先,您不需要使用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!

試試這個

 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

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

輸出2.00上午

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

輸出2.00 AM

我建議使用DateFormat,比如SimpleDateFormat

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類。

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();
    }

只需使用以下模式即可獲得預期結果:

    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();
    }

快樂編碼:)

在Android上你也有DateFormat

選定的答案有一個顯示錯誤時間的問題。 如果你的時間是12:30:00,那就是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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM