我有一个String
格式EEE, dd MMM yy hh:mm:ss Z
,我希望将其转换为Date
对象,所以我这样做了,
SimpleDateFormat fDate = new SimpleDateFormat("EEE, dd MMM yy hh:mm:ss Z",Locale.getDefault());
然后我创建了Date
Date toDate = null;
并解析我的String
日期并将其存储到toDate
toDate = fDate.parse(stringDate);
现在,日期存储在toDate
变量中,格式为
Tue Jan 20 07:33:06 GMT+05:30 2015
但这不是我想要的。
我想要这个形式的最终Date
对象,
Tue Jan 20, 2015
因此,为了实现这一目标,我创建了新的Calendar
对象并将其时间设置为toDate
,
Calendar s = Calendar.getInstance();
s.setTime(toDate);
然后我创建一个新的String
并存储Day of Week
,Month
Day of Month
和year
以获取此格式Tue Jan 20, 2015
。
String newDate = s.getDisplayName(Calendar.DAY_OF_WEEK,0,Locale.getDefault()) + " "
+ s.getDisplayName(Calendar.MONTH, 0, Locale.getDefault())
+ " " + s.get(Calendar.DAY_OF_MONTH) + ","
+ s.get(Calendar.YEAR);
现在,我的新字符串newDate
的日期格式为Tue Jan 20, 2015
,问题是它是String
对象,而不是Date
对象,并且按顺序要将其转换为Date
对象,我必须再次使用SimpleDateFormatter
。
但这需要做很多工作,因为为了将此表单的String
EEE, dd MMM yy hh:mm:ss Z
转换为此表单的Date
对象Tue Jan 20, 2015
,我是第一个使用SimpleDateFormatter
然后我在Date
对象中解析它,然后使用Date
从Calendar
对象中提取我的欲望字段并存储在String
中,然后将String
转换回Date
对象。
有没有更简单的方法来实现这一目标?即,将此String
EEE, dd MMM yy hh:mm:ss Z
直接转换为Tue Jan 20, 2015
类格式Date
而不使用SimpleDateFormatter
两次?
答案 0 :(得分:1)
虽然Java Date库非常糟糕(这几乎是每个人都使用Joda-Time库的原因,以及为什么Oracle使用Java 8发布了新的java.time package(参见article),有几点需要注意:
long
值的一个小包装。