【问题标题】:Convert String With Milliseconds To Date Format In Java [duplicate]在Java中将具有毫秒的字符串转换为日期格式[重复]
【发布时间】:2018-05-11 07:20:40
【问题描述】:

我正在尝试将毫秒 (20180510-10:50:58.106) 的字符串转换为 java 中的日期。但是,当我转换它时,我得到毫秒部分,但又在字符串中。我想要日期格式的相同部分。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class SimpleDateFormatExample {
public static void main(String[] args) {

    String curDate = "20180510-10:50:58.106";
    Date SysDateVar = null ;


    //SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS");

    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS");
    //String Todate = format.format(curDate);
    //System.out.println("format.parse(curDate)="+Todate);
    String abc = null;

    try
    {

        abc = format.format(format.parse(curDate));

         System.out.println("SysDateVar ="+abc);

    SysDateVar = new Date ((long) (format.parse(curDate)).getTime());
    System.out.println("format.parse(curDate)="+ SysDateVar);
    }
    catch (ParseException e) {

        e.printStackTrace();
    }
}
}

输出是:

$javac SimpleDateFormatExample.java
$java -Xmx128M -Xms16M SimpleDateFormatExample

SysDateVar =20180510-10:50:58.106

format.parse(curDate)=Thu May 10 10:50:58 UTC 2018

变量 abc 是一个字符串。我希望在 Date 变量中具有相同的输出。

【问题讨论】:

  • 因为默认格式(Date.toString)不打印毫秒。只需使用format.format(SysDateVar) 即可使用您定义的格式化程序来获取字符串或定义另一个字符串。 PS:为什么要从Date.getTime() 检索SimpleDateFormatter 创建DateSysDateVar = new Date ((long) (format.parse(curDate)).getTime()); -> SysDateVar = format.parse(curDate);
  • 您似乎误以为任何日期/时间类都包含某种格式信息,但事实并非如此。它们只是某个时间点的简单表示
  • 嗨,Alex,当我尝试这样做时,我的毫秒部分被截断了。日期 SysDateVar = null ; SimpleDateFormat 格式 = new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS"); SysDateVar = new Date ((long) (format.parse(curDate)).getTime());
  • no @chetan,它不会被截断,但您只能通过检查它的默认字符串表示来检查 date 实例,您打印的内容不能反映 Date,主要是因为 Date实例没有格式。您看到的是Date.toString 方法以String 形式表示实例的结果(如答案中所述)。
  • 我建议你避免使用SimpleDateFormat 类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。如果毫秒不为零,java.time 的类也将通过他们的toString 方法打印毫秒(或更小)。

标签: java date milliseconds string-to-datetime


【解决方案1】:

当您在Date 对象上调用System.out.println 时,将隐式调用此DatetoString() 方法,并以Thu May 10 10:50:58 UTC 2018 等默认格式返回。

您需要明确调用format.format(date) 以获得所需的输出。

【讨论】:

  • 您好刘,感谢您的回复。实际上,我想将输出存储在日期变量中。当我尝试使用 parse 方法将其存储在日期变量中时,毫秒部分被截断。
  • @chetan 你没有理解^^ 日期包含毫秒但不会用.toString() 打印它,因为模式是EEE MMM dd HH:mm:ss zzz yyyy prntscr.com/jgg3rc
猜你喜欢
  • 2012-01-15
  • 2012-08-11
  • 2012-09-12
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
相关资源
最近更新 更多