如何从日期时间字符串中拆分日期和时间?

2022-09-04 05:40:04

我有一个像.我想将该字符串拆分为单独的变量,例如8/29/2011 11:16:12 AM

date = 8/29/2011
time = 11:16:12 AM

这可能吗?如果是这样,我该怎么做?


答案 1

(编辑:请参阅下面的Ole V.V.的答案,了解第一个版本的更现代(Java 8)方法)

一种方法是将其解析为日期对象,然后再次重新格式化:

    try {
        DateFormat f = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
        Date d = f.parse("8/29/2011 11:16:12 AM");
        DateFormat date = new SimpleDateFormat("MM/dd/yyyy");
        DateFormat time = new SimpleDateFormat("hh:mm:ss a");
        System.out.println("Date: " + date.format(d));
        System.out.println("Time: " + time.format(d));
    } catch (ParseException e) {
        e.printStackTrace();
    }

如果您只想将其切片为日期时间片段,只需使用 split 即可获取片段

    String date = "8/29/2011 11:16:12 AM";
    String[] parts = date.split(" ");
    System.out.println("Date: " + parts[0]);
    System.out.println("Time: " + parts[1] + " " + parts[2]);

    String date = "8/29/2011 11:16:12 AM";
    System.out.println("Date: " + date.substring(0, date.indexOf(' ')));
    System.out.println("Time: " + date.substring(date.indexOf(' ') + 1));

答案 2

为什么不使用日期格式?

检查 http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html

String str = "8/29/2011 11:16:12 AM";

String fmt = "MM/dd/yyyy HH:mm:ss a";
DateFormat df = new SimpleDateFormat(fmt);

Date dt = df.parse(str);

DateFormat tdf = new SimpleDateFormat("HH:mm:ss a");
DateFormat dfmt  = new SimpleDateFormat("MM/dd/yyyy");


String timeOnly = tdf.format(dt);
String dateOnly = dfmt.format(dt);

它提供了更多的工作/代码,但这是正确的方法。