45

我正在使用 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(); 

并及时得到结果 06:06:30,

我可以将它重新存储在另一个 String 类型的变量中吗?

String displayValue = "06:06 AM";

如果 time1 变量的值为

String time = 16:00:00;

那么它应该转换为:

String displayValue = "04:00 PM";
4

10 回答 10

63

尝试这个..

Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
于 2013-04-18T13:45:06.123 回答
36

我就这样得到了答案。

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();
}
于 2013-04-19T07:15:08.160 回答
20

首先,您不需要使用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!
于 2015-07-17T03:29:39.103 回答
13

尝试这个

 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

于 2013-04-18T13:46:18.747 回答
9
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);

凌晨 2 点输出

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

输出 2.00 AM

于 2017-03-16T06:35:19.770 回答
7

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

于 2013-04-18T13:39:57.750 回答
6

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();
    }
于 2015-06-20T18:03:30.820 回答
2

所选答案存在显示错误时间的问题。如果您的时间是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();
    }
于 2018-10-10T06:45:14.737 回答
2

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

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

快乐编码:)

于 2019-03-20T06:41:36.880 回答
1

在 Android 上,你也有DateFormat

于 2013-04-18T14:54:21.297 回答