SimpleDateFormat - 您需要使用RegEx吗?

时间:2012-07-28 17:31:53

标签: java regex date simpledateformat

我有下面的代码,它产生了这个:

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);

4 个答案:

答案 0 :(得分:9)

你有一个日期。将if转换为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!
...

答案 1 :(得分: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));

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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