Java反射-调用日期函数

Java反射-调用日期函数,java,reflection,Java,Reflection,我从函数返回中得到一个字符串“Date.UTC(2013,10,9,0,0,0)”。我想用它建立一个日期。类似于“2013-10-09 00:00:00” 我可以使用反射从字符串中给我一个时间戳吗? 或者我必须使用子字符串并基于“,”进行拆分并构造日期字符串吗?要以任何格式解析日期时间,您应该看看,尤其是方法parse() API将为您提供实现目标所需的任何进一步信息。使用适合您输入格式的模式: Date date = new SimpleDateFormat("'Date.UTC('yyyy,

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

我可以使用反射从字符串中给我一个时间戳吗?
或者我必须使用子字符串并基于“,”进行拆分并构造日期字符串吗?

要以任何格式解析日期时间,您应该看看,尤其是方法
parse()

API将为您提供实现目标所需的任何进一步信息。

使用适合您输入格式的模式:

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
对象不包含格式信息。如果要以特定格式打印日期,请为此创建日期格式。

否,无需反射或字符串拆分。让日期时间格式化程序为您执行解析工作

从技术上讲,这是正确的。但不可取。捆绑的java.util.Date和Calendar是出了名的麻烦,应该避免。使用中找到的或新的

示例代码 当运行时

dateTime:2013-10-09T00:00:00.000Z
印度的日期时间:2013-10-09T05:30:00.000+05:30

您认为反射将在哪里发挥作用?解析字符串是实现这一点的合适方法。只需使用解析器,我同意Sotirios的观点,不需要反射。太好了。这很有效。您能解释一下为什么Date.UTC前面有单引号('),然后又在yyyy之前有单引号吗?@Harpreet文字字符通过单引号转义。从技术上讲,您只需要转义那些具有特殊格式含义的字符(例如
t
是一个格式化字符)。我没有担心
Date.UTC(
的哪些字符是特殊的,而是包装了整个前导文本,即
'Date.UTC('
)。
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" ) ) );