我想在Java 6中将字符串转换为日期格式

2022-06-11 00:00:00 datetime-format java

我的输入如下:

20180718140032488266000Z-0600

它在数据库中的持久化应该是这样的:

21-JUL-18 12.05.25.000000000 AM

目前我编写的代码如下:

    public static void main(String[] argv) throws ParseException {
        // SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSSZ");
        String dateInString = "20180718140032488266000Z-0600";
        Timestamp ts = formatDate(dateInString);
        System.out.println(ts);
    }

    private static Timestamp formatDate(String dateString) throws ParseException {
        // dateString = dateString.replaceAll("Z", "0000");
        SimpleDateFormat fmtTimestamp = new SimpleDateFormat("yyyyMMddHHmmssSSS'Z'");
        Date dtTimestamp1 = fmtTimestamp.parse(dateString);
        Timestamp timestamp = new java.sql.Timestamp(dtTimestamp1.getTime());
        return timestamp;
    }
我得到了以下格式的输出:2018-07-24 05:38:18.0,我的问题是如何才能将AM/PM也包含在输出中。请提出解决方案。我会非常感激的。


解决方案

我的问题是如何才能使AM/PM也出现在输出中

好吧,Java 6已经很老了。但您需要检查SimpleDateFromat的文档,您将看到字母a是针对上午/下午Maker:

a   Am/pm marker    Text    PM

您的格式为21-JUL-18 12.05.25.000000000 AM,因此在最后添加此内容时,您需要创建一个新的SimpleDateFormat

public static void main(String args[]) throws IOException, ParseException {
        String dateInString = "20180718140032488266000Z-0600";
        Timestamp ts = formatDate(dateInString);
        System.out.println(ts);
        SimpleDateFormat fmtTimestamp = new SimpleDateFormat("dd-MMM-YY hh.mm.s.SSSSS a");
        System.out.println(fmtTimestamp.format(ts));
    }

有了这个,你会得到这个...但对于这个问题,还有更好的解决方案。比如升级到Java的新版本。我的拙见。

相关文章