我有String
个实例,格式如下:
yyyyMMddHHmmss
我希望将它的任何元素拆分为整数变量。样品:
String date_time = "20080519145436";
通过上面的字符串结果必须是:
int year = 2008;
int month = 05;
int day = 19;
int hour = 14;
int minutes = 54;
int second = 36;
我找到了解决这个问题的两种方法:
SimpleDateFormatter
并获取元素。subString()
类的String
方法。我的问题是:提出哪种方式?还有其他方法吗?
答案 0 :(得分:7)
使用JodaTime中的日期格式设置机制。
例如:
final DateTimeFormatter parser = DateTimeFormat.forPattern ( "yyyyMMddHHmmss" );
final DateTime date = parser.parseDateTime( "20080519145436" );
int year = date.getYear();
...
答案 1 :(得分:2)
你可以简单地使用SimpleDateFormat
String date_time = "20080519145436";
SimpleDateFormat df =new SimpleDateFormat("yyyyMMddHHmmss");
Date d= df.parse(date_time);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
System.out.println(cal.get(Calendar.YEAR));
答案 2 :(得分:2)
甚至不要考虑使用String.subString()。日期不是String,您不应该尝试将其作为String处理,因为您的输入绝对没有完整性。您可以输入任何14位数字输入,您的算法会将其分成无意义的日期部分,例如month = 42。使用SimpleDateFormatter,JodaTime或任何其他专门针对日期对象的算法将在这种情况下抛出异常。
答案 3 :(得分:0)
另一种方式是
long d = Long.parseLong("20080519145436");
int year = (int) (d / 10000000000L);
int month = (int) (d / 100000000L % 100);
int day = (int) (d / 1000000L % 100);
int hour = (int) (d / 10000L % 100);
int minutes = (int) (d / 100L % 100);
int second = (int) (d % 100);
至于选项,我认为#2更快
int year = Integer.parseInt(date_time.substring(0, 4));
...
因为已知SimpleDateFormat很慢。
答案 4 :(得分:0)
使用SimpleDateFormatter并获取元素。