将日期字符串与时间转换为长日期

jed*_*ard 4 java date

我有一个带日期的字符串"10:00 AM 03/29/2011",我需要将它转换为使用Java的长期,我不能使用Date因为它已被弃用而且它没有给我正确的时间..所以我在网上看看如何实现它但仍然没有运气.第一次使用java.

Jon*_*eet 8

问题是你正在解析数据然后搞乱它没有明显的原因,忽略了记录的返回值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更清晰.