Преобразование строки с миллисекундами в формат даты в Java

Я пытаюсь преобразовать строку с миллисекундами (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.

1 ответ

Когда вы звоните System.out.println на Date объект, toString() метод этого Date будет вызван неявно, и он вернется в формате по умолчанию, как Thu May 10 10:50:58 UTC 2018,

Вам нужно позвонить format.format(date) явно, чтобы получить желаемый результат.

Другие вопросы по тегам