我从函数返回中得到一个字符串“Date.UTC(2013,10,9,0,0,0)”。我想用它来构建一个日期。类似“2013-10-09 00:00:00”
我可以使用反射来为字符串提供时间戳吗? 或者我是否必须使用子字符串并基于“,”拆分并构造日期字符串?
答案 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-Time或java.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