2012-03-27 285 views
8

我有1個字符串像 2011/8/29 11:16:12我想保存在像日期= 8/29/2011和時間= 11:16變量: 12 AM如何從日期時間戳得到時間和日期

怎麼可能? 你能舉個例子嗎?

+0

當我得到這種類型的字符串時,我將它減去並創建一個Date對象。但也許有更簡單的方法。 – goodm 2012-03-27 09:32:28

回答

19

一種方法做的是它解析爲一個日期對象,並再次將其重新格式化:

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

但這種方法是脆弱的。

1

試試這個,

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

嘗試在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「

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

希望它能幫助你。 :)

0

您可以通過拆分您的字符串做它分成兩子,如下

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

注意:在第二個參數中提到的splite方法將字符串分割成兩個部分。

0

爲什麼不使用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); 

它提供了更多的工作/代碼,但它是這樣做的正確方法。

0
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

請解釋您的答案,而不是隻發佈「嘗試這種」類型的解決方案。 – Gary 2014-10-16 09:26:55