使用Android将时间值转换为格式“hh:mm Am / Pm”

时间:2013-04-18 13:35:05

标签: android stringtokenizer android-date

我从数据库获取日期值,如“2013-02-27 06:06:30” 使用StringTokenizer我会分开时间,如下所示

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";

10 个答案:

答案 0 :(得分:49)

试试这个..

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

答案 1 :(得分:24)

我得到了这样的回答。

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

答案 2 :(得分:14)

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

答案 3 :(得分:9)

试试这个

 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

答案 4 :(得分:5)

我建议使用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类。

答案 5 :(得分:5)

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

答案 6 :(得分:5)

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

答案 7 :(得分:1)

在Android上,您还有DateFormat

答案 8 :(得分:1)

所选答案存在显示时间错误的问题。如果您的时间是 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();
    }

答案 9 :(得分:0)

只需使用以下模式,您将获得预期的结果:

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

快乐编码:)