Приведенный ниже код выдает мне текущее время. Но он ничего не говорит о миллисекундах.
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
будет работать нормально. Здесь наименьшей единицей времени является секунда, но как мне получить и миллисекунду?
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"));
}
Вам нужно только добавить поле миллисекунд в строку формата даты:
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
В API doc SimpleDateFormat подробно описана строка формата.
попробуйте это: -
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()));
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 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 времени библиотека была источником вдохновения для 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 ();
Самый простой способ (до 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());
Я хотел бы использовать что-то вроде этого:
String.format("%tF %<tT.%<tL", dateTime);
Переменная датавремя
может быть любая дата и/или время, см. javadoc для форматирования
.
В дополнение к выше ответы, вот небольшой рабочий пример программы, которая выводит текущее время и дату, в том числе миллисекунд.
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);
}
}
</код>
Используйте это, чтобы получить ваш текущее время в указанном формате :
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.print(dateFormat.format(System.currentTimeMillis())); }
Я не'т видите ссылку на это:
SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmssSSS");
выше также полезно.
Ответ:
Datetimeformatter с dateFormatter = datetimeformatter с.ofPattern (на"гггг-ММ-ДД чч:мм:СС.СНО" - а); ZonedDateTime пуск = немедленный.сейчас().atZone(ZoneId.systemDefault()); Строки startTimestamp = начало.формат(dateFormatter);
Доктор в Java 8 это названия фракция-часть вторая , в то время как в Java 6 была названа МС. Это привело меня в замешательство
Вы можете просто получить его в формат, который вы хотите.
String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));