Как получить текущее время в формате YYYY-MM-DD HH:MI:Sec.Millisecond в Java?

Приведенный ниже код выдает мне текущее время. Но он ничего не говорит о миллисекундах.

public static String getCurrentTimeStamp() {
    SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy
    Date now = new Date();
    String strDate = sdfDate.format(now);
    return strDate;
}

Я получаю дату в формате 2009-09-22 16:47:08 (YYYY-MM-DD HH:MI:Sec).

Но я хочу получить текущее время в формате 2009-09-22 16:47:08.128 ((YYYY-MM-DD HH:MI:Sec.Ms)- где 128 означает миллисекунду.

SimpleTextFormat будет работать нормально. Здесь наименьшей единицей времени является секунда, но как мне получить и миллисекунду?

Комментарии к вопросу (2)
Решение
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Комментарии (8)

Java в один лайнер

public String getCurrentTimeStamp() {
    return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date());
}

в стиле JDK8

public String getCurrentLocalDateTimeStamp() {
    return LocalDateTime.now()
       .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
}
Комментарии (4)

Вам нужно только добавить поле миллисекунд в строку формата даты:

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

В API doc SimpleDateFormat подробно описана строка формата.

Комментарии (0)

попробуйте это: -

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date date = new Date();
System.out.println(dateFormat.format(date));

или

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
Комментарии (0)

многабукаф.

Instant.now()
       .toString()

2016-05-06T23:24:25.694 з

ZonedDateTime.now( 
    ZoneId.of( "America/Montreal" ) 
).format(  DateTimeFormatter.ISO_LOCAL_DATE_TIME )
 .replace( "T" , " " )

2016-05-06 19:24:25.694

и Java.время

В Java 8 и выше, у нас есть [Ява.время] рамки(http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html), встроенные в Java 8 и выше. Эти новые классы вытеснить хлопотно старых Java.утиль.Дата/.Календарь классов. Новые классы вдохновляют весьма успешной Joda времени платформа, предназначена как своего преемника, сходных по концепции, но перестроенные. Определены в JSR 310. Продлен [ThreeTen-Экстра](проект http://www.threeten.org/threeten-extra/). Смотрите учебник.

Помните, что Java.время способно НС разрешение (9 разрядов после запятой в доли секунды), по сравнению с МС разрешение (3 знака после запятой), как в Java.утиль.Даты & Joda времени. Поэтому, когда форматирование для отображения только 3 знака после запятой, вы могли скрываться сведения.

Если вы хотите избавиться от любого микросекундах или наносекундах от ваших данных, усечь.

Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;

На Java.время использовать классы [стандарт ISO 8601] формат3 по умолчанию для разбора/генерации строк. А я в конце-это сокращение от "Зулу", и означает мирового.

В миг представляет собой момент на шкале времени UTC с разрешением до НС. Фиксация текущего момента в Java 8 ограничивается МС, С новая реализация в Java 9 захвата до наносекунд в зависимости от возможностей аппаратного обеспечения Вашего компьютера часы.

Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();

2016-05-06T23:24:25.694 з

Заменить " Т " в середине с места, и З С ничего, чтобы получить желаемый результат.

String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.

2016-05-06 23:24:25.694

Как вы Don'т волнует, включая смещение или часовом поясе, сделать а "местные" по-дата-время не связаны с какой-либо конкретной местности.

String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );

Joda Времени

Весьма успешный Joda времени библиотека была источником вдохновения для Java.временные рамки. Желательно перейти на Java.время, когда удобно.

В [ИСО 8601] формат3 включает в себя миллисекунды, и используется по умолчанию для Joda времени 2.4 библиотека.

System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );

При запуске...

в

Now: 2013-11-26T20:25:12.014Z

Кроме того, вы можете задать на доли-секунды миллисекунды в виде числа, если необходимо:

int millisOfSecond = myDateTime.getMillisOfSecond ();
Комментарии (0)

Самый простой способ (до Java 8) использовать,

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

Но класса simpledateformat не является потокобезопасным. Ни Ява.утиль.Дата. Это приведет к тому, что приводит к потенциальным проблемам параллелизма для пользователей. И есть много проблем в существующих конструкциях. Чтобы преодолеть эти в Java 8 у нас есть отдельный пакет под названием Ява.время. Это Java на SE 8 дата и время документ имеет хорошее представление о нем.

Так что в Java 8 что-то вроде ниже будет делать трюк (в формате текущая дата/время),

LocalDateTime.now()
   .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

И одна вещь, чтобы отметить, он был разработан с помощью популярных сторонних библиотек Joda времени,

проект был совместно возглавляемого автор Joda времени (Стивен Коулберн) и Oracle, согласно спецификации JSR 310 и появится в новой версии SE 8 пакета java.время.

Но теперь Joda времени становится устаревшим и просил пользователи перешли на новую Ява.время. и GT;заметьте, что из Java SE с 8-го, пользователям предлагается перейти на Java.время (в JSR-310) - основной частью JDK, который заменяет этот проект

В любом случае, сказав,что

Если у вас есть календарь экземпляр можно использовать НИЖЕ, чтобы преобразовать его в новое Ява.время,

    Calendar calendar = Calendar.getInstance();
    long longValue = calendar.getTimeInMillis();         

    LocalDateTime date =
            LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
    String formattedString = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

    System.out.println(date.toString()); // 2018-03-06T15:56:53.634
    System.out.println(formattedString); // 2018-03-06 15:56:53.634

Если у вас свидание объект,

    Date date = new Date();
    long longValue2 = date.getTime();

    LocalDateTime dateTime =
            LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue2), ZoneId.systemDefault());
    String formattedString = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

    System.out.println(dateTime.toString()); // 2018-03-06T15:59:30.278
    System.out.println(formattedString);     // 2018-03-06 15:59:30.278

Если вы просто эпоха миллисекунд,

LocalDateTime date =
        LocalDateTime.ofInstant(Instant.ofEpochMilli(epochLongValue), ZoneId.systemDefault());
Комментарии (2)

Я хотел бы использовать что-то вроде этого:


String.format("%tF %
Комментарии (0)

В дополнение к выше ответы, вот небольшой рабочий пример программы, которая выводит текущее время и дату, в том числе миллисекунд.

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

public class test {
    public static void main(String argv[]){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date now = new Date();
        String strDate = sdf.format(now);
        System.out.println(strDate);
    }
}

</код>

Комментарии (0)

Используйте это, чтобы получить ваш текущее время в указанном формате :

 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 System.out.print(dateFormat.format(System.currentTimeMillis()));  }
Комментарии (3)

Я не'т видите ссылку на это:

SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmssSSS");

выше также полезно.

http://www.java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm

Комментарии (0)

Ответ: Datetimeformatter с dateFormatter = datetimeformatter с.ofPattern (на"гггг-ММ-ДД чч:мм:СС.СНО" - а); ZonedDateTime пуск = немедленный.сейчас().atZone(ZoneId.systemDefault()); Строки startTimestamp = начало.формат(dateFormatter);

Комментарии (0)

Доктор в Java 8 это названия фракция-часть вторая , в то время как в Java 6 была названа МС. Это привело меня в замешательство

Комментарии (0)

Вы можете просто получить его в формат, который вы хотите.

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));
Комментарии (1)