Как отделить дату и время от строки datetime?

У меня есть строка, как 8/29/2011 11:16:12 AM. Я хочу разделить эту строку на отдельные переменные, такие как

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

Это возможно? Если так, как бы я это сделал?

Ответ 1

Один из способов сделать это - проанализировать объект даты и переформатировать его снова:

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

Если вы просто хотите нарезать его на кусочки даты и времени, просто используйте разделение, чтобы получить кусочки

    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

Попробуй это:

String main = "8/29/2011 11:16:12 AM";
        String[] tmp;
        String date, time;

        tmp = main.split(" ");

        // [0] = 8/29/2011
        // [1] = 11:16:12
        // [2] = AM

        date = tmp[0].toString(); // 8/29/2011
        time = tmp[1].toString() + " " + tmp[2].toString(); // 11:16:12 AM

Ответ 3

Попробуйте split функцию в Java:

String my_string="8/29/2011 11:16:12 AM"
String [] my_date_time = null;
my_date_time = my_string.split(" ");
String Date_str=my_date_time[0];
String Time_str=my_date_time[1]+" "+my_date_time[2];

Вы получаете переменные строки, такие как Date_str="8/29/2011" и Time_str="11:16:12 AM"

Ответ 4

String str = "8/29/2011 11:16:12 AM"
String date = str.subString(0, str.indexOf(' '));
String time  = str.subString(str.indexOf(' ')+1);

Ответ 5

Почему бы не использовать DateFormat?

Отметьте 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);

Это дает больше работы/кода, но это правильный способ сделать это.

Ответ 6

Вы можете сделать это, разделив вашу строку на две подстроки, следующим образом

String main = "8/29/2011 11:16:12 AM";
String s[] = main.split(" ",2);
String date = s[0];
String time = s[1];

ПРИМЕЧАНИЕ. Метод split разделяет строку на две части, как указано во втором аргументе.

Ответ 7

mDate = new Date();
DateFormat timeFormat = SimpleDateFormat.getTimeInstance();
DateFormat dateFormat = SimpleDateFormat.getDateInstance();
timeFormat.format(mDate); // formats to: 4:53:03 AM
dateFormat.format(mDate); // formats to: Oct 16, 2014