我有一个带日期的字符串"10:00 AM 03/29/2011",我需要将它转换为使用Java的长期,我不能使用Date因为它已被弃用而且它没有给我正确的时间..所以我在网上看看如何实现它但仍然没有运气.第一次使用java.
问题是你正在解析数据然后搞乱它没有明显的原因,忽略了记录的返回值Date.getYear()等.
你可能只想要这样的东西:
private static Date parseDate(String text)
throws ParseException
{
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a MM/dd/yyyy",
Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return dateFormat.parse(text);
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想要long,只需使用:
private static long parseDate(String text)
throws ParseException
{
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a MM/dd/yyyy",
Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return dateFormat.parse(text).getTime();
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果无法将值解析为调用方,我将决定该怎么做,这使得此代码更具可重用性.(如果你真的想要的话,你总是可以编写另一种方法来调用这个方法并吞下异常.)
与以往一样,我强烈建议您使用Joda Time在Java中进行日期/时间工作 - 它比java.util.Date/Calendar/etc更清晰.