How to split date and time from a datetime string?

后端 未结 8 1657
面向向阳花
面向向阳花 2020-12-11 15:53

I have a string like 8/29/2011 11:16:12 AM. I want to split that string into separate variables like

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


        
相关标签:
8条回答
  • 2020-12-11 16:21

    Try the split function in 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];
    

    You get variable Strings like this Date_str="8/29/2011" and Time_str="11:16:12 AM"

    0 讨论(0)
  • 2020-12-11 16:29

    Try this:

    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
    
    0 讨论(0)
  • 2020-12-11 16:32
    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
    
    0 讨论(0)
  • 2020-12-11 16:36
    String str = "8/29/2011 11:16:12 AM"
    String date = str.subString(0, str.indexOf(' '));
    String time  = str.subString(str.indexOf(' ')+1);
    
    0 讨论(0)
  • 2020-12-11 16:41

    Why not to use DateFormat?

    Check 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);
    

    It gives more work/code but it's the proper way to do it.

    0 讨论(0)
  • 2020-12-11 16:43

    (Edit: See Answer by Ole V.V. below for a more modern (Java 8) approach for the first version)

    One way to do is parse it to a date object and reformat it again:

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

    If you just want to slice it into date-time pieces, just use split to get pieces

        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]);
    

    or

        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));
    
    0 讨论(0)
提交回复
热议问题