2012-07-28 76 views
3

我有下面的代码,这会产生这样的:SimpleDateFormat - 您是否需要使用RegEx?

2012-07-28 17:30:23 

这就是我想要的。但是,如果我想提取所有数字以自己分配给变量,是否需要创建RegEx或者是否有一些方法可以简单地从SimpleDateFormat中提取这些数据?

SimpleDateFormat dateFormatUCT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
dateFormatUCT.setTimeZone(TimeZone.getTimeZone("UCT")); 

//Time in UCT 
String date = dateFormatUCT.format(new Date()); 

System.out.println(date); 
+1

要分配给variable..can什么号码,你请包括一个例子 – 2012-07-28 17:34:33

+0

看看['parse()'](http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#parse%28java.lang.String,%当您只有日期的字符串表示形式时,SimpleDateFormat的方法是20java.text.ParsePosition%29)。 – nkr 2012-07-28 17:38:58

回答

9

你有一个日期。如果转换为GregorianCalendar,每场问GregorianCalendar的:

GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("UCT")); // or UTC? 
cal.setTime(theDate); // if you want something other than the current date 
int year = cal.get(Calendar.YEAR); 
int month = cal.get(Calendar.MONTH) + 1; // months start at 0, duh! 
... 
+0

为什么一个月+ 1? 0 = Calendar.JANUARY – Reimeus 2012-07-28 18:01:01

+1

因为如果他想要格式化的日期字符串中的相同数字,他希望1月份(因为除了GregorianCalendar的设计师想要的世界上的每个人)。 – 2012-07-28 18:02:38

5

你并不需要一个正则表达式。您只需将日期提供给日历,然后使用get()方法获取每个字段。

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
c.setTime(new Date()); 

System.out.println(c.get(Calendar.YEAR)); 
System.out.println(c.get(Calendar.MONTH)); 
System.out.println(c.get(Calendar.DATE)); 

+0

这是否允许您获得时间和秒数? – 2012-07-28 17:42:54

+1

当然可以。你为什么不检查javadoc? – 2012-07-28 17:44:01

1

不能从SimpleDateFormat提取它们AFAIK,但你可以使用Java.util.Calendar使用其get(Calendar.{DAY_OF_MONTH|MONTH|YEAR|HOUR|MINUTE|SECOND})法提取日期组件。 Calendar对象提供了一个采用日期的方法setTime()。因此,您可以使用相同的日期格式使用SimpleDateFormat并使用Calendar来提取日期组件。

1

使用split()方法

2.做这样的......

String s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); 

    String[] arr = s.split(" "); 

    String newDStr = arr[0]; 

    String newTStr = arr[1]; 

    String[] DateArr = newDStr.split("-");  // Holds Date values. 
    String[] TimeArr = newTStr.split(":");  // Holds Time values 
+0

这就是我目前所做的。但是这似乎还有很长的路要走。这是同时获得时间和日期的最快方法吗? – 2012-07-28 17:43:21

+0

不知道最快,但这是建设逻辑的好东西......他他.... – 2012-07-28 17:44:36

相关问题