3

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

2012-07-28 17:30:23

这就是我想要的。但是,如果我想自己提取所有数字以分配给变量,我是否需要制作正则表达式,或者有什么方法可以简单地从 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

4 回答 4

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!
...
于 2012-07-28T17:37:07.423 回答
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));

等等

于 2012-07-28T17:37:10.063 回答
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
于 2012-07-28T17:40:57.457 回答
1

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

于 2012-07-28T17:39:03.773 回答