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

时间:2018-07-31 13:59:20

标签: java datetime-format

我的输入是这样的:

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。请提出解决方案。我将非常感激。

2 个答案:

答案 0 :(得分:1)

  

我的问题是如何在输出中同时获得AM / PM

Java 6非常老。但是您需要检查SimpleDateFromat的Documentantion。与此同时,您会看到字母a是给am / pm 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的新版本一样。我的拙见。

答案 1 :(得分:1)

下面的代码将以'2018-07-31 7:39:09 PM'的格式为您提供日期。请参考http://tutorials.jenkov.com/java-internationalization/simpledateformat.html#formatting-dates了解更多信息

import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
    Date date = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd h:mm:ss a");
    String strDate= formatter.format(date);
    System.out.println(strDate);
}

}