问题我面对的是dateFormat.parse(字符串)?

时间:2012-04-10 07:42:43

标签: java date

我有以下代码段

SimpleDateFormat dateFormat = new SimpleDateFormat(
      "yyyy-MM-dd hh:mm:ss.SSS");
 String processedContentDate="2012-04-10 12:53:28.033";   
 java.util.Date parsedDate = dateFormat.parse(processedContentDate);
java.sql.Timestamp timestamp = new java.sql.Timestamp(
 parsedDate.getTime());

我将解析日期定义为Tue Apr 10 00:53:28 IST 2012,时间戳为2012-04-10 00:53:28.033。 我希望得到的时间与12:53:28.033完全一样(在原始字符串中)  不是00:53:28.033。没有得到为什么12:53:28被转换为00:53:28。我该怎么办才能得到12:53:28?

编辑:收到回复后,我尝试了这个小程序,当前时间是14:34:38.899 但在两行,即第1行和第2行,我得到了解析日期 2012-04-10 14:34:38.899 根据回复,我应该在第1行得到02:34:38.899,日期格式为yyyy-MM-dd hh:mm:ss.SSS")

    java.util.Date date= new java.util.Date();
    String strDate=date.toString();
    java.util.Date parsedDate;
    java.util.Date parsedDate2;
     SimpleDateFormat dateFormat = new SimpleDateFormat(
     "yyyy-MM-dd hh:mm:ss.SSS");// line 1
     SimpleDateFormat dateFormat2 = new SimpleDateFormat(
     "yyyy-MM-dd HH:mm:ss.SSS");//line 2
     try {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
          strDate=timestamp.toString();


            parsedDate = dateFormat.parse(strDate);//line1
            parsedDate2 = dateFormat2.parse(strDate);//line2

4 个答案:

答案 0 :(得分:5)

像那样定义你的dateFormat

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

HH代替hh。见SimpleDateFormat

答案 1 :(得分:1)

您的日期格式必须为yyyy-MM-dd HH:mm:ss.SSS

hh是上午/下午的小时,而HH是一天中的几小时(这就是你错误的地方)。请参阅SimpleDateFormat

答案 2 :(得分:1)

根据Date.toString()Timestamp.toString的定义,.toString()输出始终使用24小时制。如果要使用AM / PM显示时间,则应使用dateformatter打印日期。由于您使用相同的日期/时间作为两者的来源(strDate将使用14:34),当您解析日期时,使用12小时时钟的SimpleDateFormat是“宽松的”并且允许将14解析为一小时。

如果您设置

dateFormat.setLenient(false);

你可能会发现dateFormat.parse(strDate)会失败。

要打印日期,我绝不会依赖toString,而是始终使用格式化程序。

System.out.println(dateFormat.format(parsedDate)); // should show ...02:36...
System.out.println(dateFormat2.format(parsedDate)); // should show ...14:36...
System.out.println(dateFormat.format(parsedDate2)); // should show ...02:36...
System.out.println(dateFormat2.format(parsedDate2)); // should show ...14:36...

答案 3 :(得分:-1)

尝试以下代码:

SimpleDateFormat fmt = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); 日期日期= fmt.parse(“yourdate”); SimpleDateFormat fmtOut = new SimpleDateFormat(“dd-MM-yyyy hh:mm a”); String myDate = fmtOut.format(date);

如果你的日期是2016-06-10 12:06:43,那么输出将是10-06-2016 12:06 pm。