我得到一個字符串「Date.UTC(2013,10,9,0,0,0)」 from函數返回。我想建立一個約會。像「2013-10-09 00:00:00」Java Reflection - 調用日期函數
我可以使用反射給我一個字符串的時間戳嗎? 或者我必須使用一個子字符串和基於「,」拆分並構造日期字符串?
我得到一個字符串「Date.UTC(2013,10,9,0,0,0)」 from函數返回。我想建立一個約會。像「2013-10-09 00:00:00」Java Reflection - 調用日期函數
我可以使用反射給我一個字符串的時間戳嗎? 或者我必須使用一個子字符串和基於「,」拆分並構造日期字符串?
使用SimpleDateFormat
帶有花紋適合您的輸入格式:
Date date = new SimpleDateFormat("'Date.UTC('yyyy,MM,dd,HH,mm,ss)").parse(str);
下面是一些測試代碼:
String str = "Date.UTC(2013,10,9,0,0,0)";
Date date = new SimpleDateFormat("'Date.UTC('yyyy,MM,dd,HH,mm,ss)").parse(str);
System.out.println(date);
輸出:
Wed Oct 09 00:00:00 EST 2013
注意Date
對象攜帶不格式化信息。如果您想以特定格式打印Date
,請爲此創建一個DateFormat
。
爲了解析任意格式的日期時間,你應該在http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html看看,特別是在方法parse()
的API將有助於你要完成你的目標的任何進一步的信息。
不需要,不需要反射和字符串分割。讓日期時間格式化程序爲您完成解析工作。
answer by Bohemian在技術上是正確的。但不可取。捆綁的java.util.Date和Calendar非常麻煩,應該避免。使用Joda-Time或Java 8中的新。
String input = "Date.UTC(2013,10,9,0,0,0)";
DateTimeFormatter formatter = DateTimeFormat.forPattern("'Date.UTC('yyyy,MM,dd,HH,mm,ss)").withZone(DateTimeZone.UTC);
DateTime dateTime = formatter.parseDateTime(input);
System.out.println("dateTime: " + dateTime);
System.out.println("dateTime in India: " + dateTime.withZone(DateTimeZone.forID("Asia/Kolkata")));
當運行...
dateTime: 2013-10-09T00:00:00.000Z
dateTime in India: 2013-10-09T05:30:00.000+05:30
如果你覺得反射會來這裏發揮作用?解析字符串是完成此操作的適當方法。 –
只需使用解析器,我同意Sotirios,不需要反思。 –