Java Reflection - 调用日期函数

时间:2014-02-13 01:40:25

标签: java reflection

我从函数返回中得到一个字符串“Date.UTC(2013,10,9,0,0,0)”。我想用它来构建一个日期。类似“2013-10-09 00:00:00”

我可以使用反射来为字符串提供时间戳吗? 或者我是否必须使用子字符串并基于“,”拆分并构造日期字符串?

3 个答案:

答案 0 :(得分:2)

使用适合您输入格式的模式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

答案 1 :(得分:0)

要解析任何格式的DateTime,您应该查看http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html,尤其是方法parse()

API将提供您完成目标所需的任何进一步信息。

答案 2 :(得分:0)

不,不需要反射或字符串分割。让日期时格格式器为您完成解析工作。

answer by Bohemian在技术上是正确的。但不可取。捆绑的java.util.Date和Calendar是众所周知的麻烦,应该避免。使用Joda-Timejava.time.* package中的新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