- Android преобразование даты и времени в миллисекунды
- 10 ответов
- java.time и ThreeTenABP
- Вопрос: разве java.time не требует Android API уровня 26?
- Связи
- Похожие вопросы:
- Android Vitals — Сколько времени?
- Сколько времени?
- uptimeMillis() или nanoTime()?
- Реализация uptimeMillis()
- Реализация nanoTime()
- Заключение
- Из миллисекунд в DateTime
- Преобразование времени в миллисекунды в Java
- 1. Обзор
- 2. Ядро Java
- 2.1. Использование Даты
- 2.2. Использование календаря
- 3. Java 8 Date Time API
- 3.1. Использование мгновенного
- 3.2. Использование LocalDateTime
- 4. Джода-Время
- 4.1. Использование Мгновенного
- 4.2. Использование DateTime
- 5. Заключение
Android преобразование даты и времени в миллисекунды
У меня есть один формат даты и времени, как показано ниже:
Я хочу преобразовать его в миллисекунды, но на самом деле не знаю, какой это формат. Кто-нибудь может пожалуйста помочь мне.
10 ответов
Я работаю с Visual Studio 2010, MVC 3 и C#. я создаю некоторые highcharts и мне нужно, чтобы ось x была датой. Я извлекаю даты из базы данных и добавляю их в массив, который затем будет передан в highcharts. Я думаю, что highcharts требует, чтобы даты были в миллисекундном формате. Как мне.
Возможный Дубликат : Рассчитать разницу в дате и времени в java как бы будущая дата, такая как Sat Feb 17 2012, была преобразована в миллисекунды в java, которые затем можно вычесть из текущего времени в миллисекундах, чтобы получить время, оставшееся до этой будущей даты.
Код может быть написан следующим образом для API 26 и выше
Но на данный момент только 6% устройств работает на 26 или выше. Таким образом, вам потребуется обратная совместимость для вышеуказанных классов. JakeWharton был написан ThreeTenABP , который основан на ThreeTenBP, но специально разработан для работы с Android. Подробнее о том, как и почему вместо java.time, ThreeTen-Backport или даже Joda-Time следует использовать ThreeTenABP
Таким образом, используя ThreeTenABP, приведенный выше код может быть записан как (и проверен на API 16 — API 29)
Оле охватил обобщенную информацию (для Java тоже) в своем ответе, вы должны изучить.
Ниже приведен старый подход (и предыдущая версия этого ответа), который не следует использовать сейчас
Используйте следующий метод
Вы можете использовать этот код
Я преобразовал формат даты в milliseconds и формат времени в milliseconds . Я получаю текущее время более чем в 13 digits . CurrentTime= 1357755780000 , StartingTime=1357602840 , EndingTime=1357756140 Но когда я делаю сравнение в приведенном ниже коде, часть if не выполняется, выполняется только.
У меня есть несколько текстовых файлов с датами формы 2015-09-08 14:38:03 2015-09-08 14:38:03.1 2015-09-08 14:38:03.2 что я хочу преобразовать в формат даты/времени Matlab. Как вы можете видеть, текстовые строки имеют другой формат времени относительно миллисекунд. В первом случае миллисекунды не.
В Kotlin,
где timeInMilSeconds -миллисекунды( var timeInMilSeconds: Long ), а date — дата
Эта переменная beginupd содержит формат
Возвращает количество миллисекунд с 1 января 1970 года, 00:00:00 GMT, представленное этим объектом даты.
Скрытая строка даты и времени в миллисекундах:
с //millis по dateString
Попробуйте это в Kotlin,
тот же код в Java,
java.time и ThreeTenABP
Я даю современный ответ — хотя и не более современный, чем он работает и на вашем уровне Android API.
Вывод из этого фрагмента является:
Классы SimpleDateFormat , Date и Calendar , используемые в большинстве других ответов, плохо разработаны и теперь давно устарели. Я рекомендую вместо этого использовать java.time, современную Java дату и время API. Правка: другие ответы были прекрасными ответами, когда этот вопрос был задан в 2013 году. Только время идет, и мы больше не должны использовать SimpleDateFormat , Date и Calendar .
Вопрос: разве java.time не требует Android API уровня 26?
java.time прекрасно работает как на старых, так и на новых устройствах Android. Для этого просто требуется как минимум Java 6 .
- В Java 8 и более поздних версиях, а также на более новых устройствах Android (начиная с API уровня 26) современный API поставляется встроенным.
- В не-Android Java 6 и 7 получите Бэкпорт ThreeTen, бэкпорт современных классов (ThreeTen для JSR 310; см. Ссылки внизу).
- На (более старом) Android используйте Android версию ThreeTen Backport. Он называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.
Связи
- Oracle учебник: дата и время , объясняющие, как использовать java.time.
- Java запрос спецификации (JSR) 310 , где java.time был впервые описан.
- Проект ThreeTen Backport, backport от java.time до Java 6 и 7 (ThreeTen для JSR-310).
- ThreeTenABP, Android издание ThreeTen Backport
- Вопрос: Как использовать ThreeTenABP в проекте Android, с очень подробным объяснением.
Android 26 и выше
Просто в дополнение к приведенным ответам, если вам нужно преобразовать время, заданное датой, в другие единицы времени, вы можете использовать TimeUnit API
Похожие вопросы:
У меня есть значение даты и времени, хранящееся в структуре. Я хочу преобразовать это в timestamp (миллисекунды). dt.year = 2016; dt.month = 01; dt.date = 11; dt.hour = 17; dt.minute = 14;.
У меня есть дата и время от DatePicker и TimePicker . Теперь я хочу изменить выбранную дату и время на миллисекунды . Как я могу это сделать. Например, у меня выбрана дата 2-5-2012 , а время 20:43.
Я использовал SimpleDateFormat formatter = new SimpleDateFormat(«dd.MM.yyyy, HH:mm»); String time = formatter.format(new Date()); чтобы получить время (12.03.2012, 17:31), теперь я хочу.
Я работаю с Visual Studio 2010, MVC 3 и C#. я создаю некоторые highcharts и мне нужно, чтобы ось x была датой. Я извлекаю даты из базы данных и добавляю их в массив, который затем будет передан в.
Возможный Дубликат : Рассчитать разницу в дате и времени в java как бы будущая дата, такая как Sat Feb 17 2012, была преобразована в миллисекунды в java, которые затем можно вычесть из текущего.
Я преобразовал формат даты в milliseconds и формат времени в milliseconds . Я получаю текущее время более чем в 13 digits . CurrentTime= 1357755780000 , StartingTime=1357602840 .
У меня есть несколько текстовых файлов с датами формы 2015-09-08 14:38:03 2015-09-08 14:38:03.1 2015-09-08 14:38:03.2 что я хочу преобразовать в формат даты/времени Matlab. Как вы можете видеть.
Я работаю над робототехническим проектом, который имеет данные датчиков из разных мест с точностью до миллисекунды (gps синхронизированных ntp с точностью до 1 мс). Как преобразовать исторические.
Пожалуйста, не мог бы кто-нибудь посоветовать мне получить правильные результаты? У меня есть поле даты, которое приводит к формату 2016-07-08 10:09:22.910, и я хочу удалить миллисекунды и в то же.
Мне нужно сравнить две даты в моем приложении React Native: текущую дату с серверной датой в формате UTC. Каков здесь наилучший подход? Я подумал о том, чтобы преобразовать две даты в миллисекунды.
Источник
Android Vitals — Сколько времени?
Вчера у меня возникла идея:
Кому-нибудь интересна серия статей, посвященная мониторингу производительности Android в эксплуатационной среде?
Не что-то типа «настраиваем Firebase Performance Monitoring» (что меня не особо воодушевляет), а скорее «как работает Android».
“Я написал код, который определяет, когда происходит первый onDraw в приложении, но он не работает на API 25. Мне понадобилось какое-то время, чтобы понять причину!”
На что я получил положительные отзывы и сразу решил начать писать. Эта серия статей будет посвящена мониторингу производительности и стабильности приложений Android в эксплуатации. Она озаглавлена Android Vitals поскольку она тесно связана с Android vitals от самих Google:
Android vitals является инициативой Google, нацеленной на повышение производительности и стабильности Android-устройств. Когда пользователь, разрешивший сбор данных, запускает ваше приложение, его Android-устройство регистрирует различные метрики, включая данные о стабильности приложения, времени его запуска, использовании батареи, времени рендеринга и отказах в разрешениях.
Если у вас есть вопросы или идеи для будущих статей, не стесняйтесь писать мне в Twitter!
Для разогрева начну с простого вопроса:
Сколько времени?
Чтобы отслеживать производительность, нам нужно измерять временные интервалы, то есть разницу между двумя моментами времени. JDK предоставляет нам 2 способа получить текущее время:
Что из этого многообразия выбрать? Ответить на этот вопрос может помочь javadoc по SystemClock :
System#currentTimeMillis может быть установлен пользователем или телефонной сетью, поэтому время может непредсказуемо прыгать назад или вперед. При измерениях интервалов или прошедшего времени следует использовать другой таймер.
SystemClock#uptimeMillis останавливается, когда система переходит в режим глубокого сна. Он является основой для измерений временных интервалов при использовании Thread#sleep(long), Object#wait(long) (это касается и System#nanoTime). Этот таймер подходит для измерения временных интервалов, когда интервал не захватывает спящий режим устройства.
SystemClock#elapsedRealtime и SystemClock#elapsedRealtimeNanos захватывают и глубокий сон. Эти таймеры являются рекомендуемой универсальной основой для измерения временных интервалов.
Работа приложения не влияет на то, что происходит в глубоком сне, поэтому наши лучшие варианты — SystemClock.uptimeMillis() и System.nanoTime() .
uptimeMillis() или nanoTime()?
System.nanoTime() более точен, чем uptimeMillis() , но полезно это только для микробенчмарков. При отслеживании производительности в эксплуатации нам достаточно разрешения в миллисекундах.
Давайте сравним их влияние на производительность. Я клонировал репозиторий Android Benchmark Samples и добавил следующий тест:
Результаты на Pixel 3 под Android 10:
System.nanoTime() среднее время: 208 нс
SystemClock.uptimeMillis() среднее время: 116 нс
SystemClock.uptimeMillis() почти в два раза быстрее! Хотя эта разница не должна иметь сколько-нибудь значимого влияния на приложение, можем ли мы понять, почему он намного быстрее?
Реализация uptimeMillis()
SystemClock.uptimeMillis() реализована как нативный метод, аннотированный @CriticalNative . CriticalNative обеспечивает более быстрые JNI-преобразования для методов, не содержащих объектов.
Нативная реализация находится в SystemClock.cpp :
systemTime() определен в Timers.cpp :
Реализация nanoTime()
System.nanoTime() также реализован как нативный метод, аннотированный @CriticalNative .
Нативная реализация находится в System.c:
Две эти реализации на самом деле очень похожи, они обе вызывают clock_gettime() .
Оказывается, @CriticalNative только недавно была добавлена в System.nanoTime() , что объясняет, почему он был медленнее!
Заключение
При отслеживании производительности во время работы приложения:
Разрешения в миллисекундах достаточно для большинства случаев.
Для измерения временных интервалов используйте SystemClock.uptimeMillis() или System.nanoTime() . Последний работает медленнее на старых версиях Android, но сейчас это не имеет особого значения.
Я предпочитаю SystemClock.uptimeMillis() , так как мне проще использовать миллисекунды.
100 мс — это предел, при котором люди перестают чувствовать, что они напрямую манипулируют объектами в пользовательском интерфейсе (т.е. имеют «интуитивный» опыт), и вместо этого начинают чувствовать, что они приказывают компьютеру выполнить действие за них, а затем ждут ответа. (источник)
Легко запомнить, что 100 мс — это 1/10 секунды. У меня нет той же легкой напоминалки для наносекунд, я должен помнить, что 1 мс = 1 000 000 нс, а затем производить вычисления.
SystemClock отсутствует в JDK, поэтому, если вы стремитесь писать переносимый код, вам лучше использовать System.nanoTime() .
Материал подготовлен в рамках курса «Android Developer. Professional». Если вам интересно узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.
Источник
Из миллисекунд в DateTime
Перевести с миллисекунд в минуты
Как перевести с миллисекунды в формат минуты и секунды ,на вроде такого 01 : 10 ? Chronometer.
Количество миллисекунд между первым и вторым нажатием на кнопку
Как на java (android studio) проще и лучше узнать количество миллисекунд между первым и вторым.
Несоответствие формата даты System.DateTime и DATETIME в SQL Express Edition
Столкнулся с такой проблемой: В System.DateTime дата пишется в формате дд.мм.гггг чч.мм.сс, а.
Фильтр дат в таблице между DateTimePicker1.DateTime и DateTimePicker2.DateTime
Не пинайте сильно. Начинающий. Не срабатывает выбор дат из таблицы. База GDB Firebird. Поле таблицы.
Что значит «делаю обратно»?
Добавлено через 3 минуты
Можно же сначала поискать.
Спасибо!
Нашел свою ошибку.
а я делал long millisecond = seconds*1000L; результат был неверным. Почему то результат был даже меньше значения seconds
Не могу вставить datetime в datetime путем INSERT INTO SELECT
Добрый день! Думаю мой вопрос ламерский и находится где-то в FAQ, где я его не нашел. Мне нужно.
Ошибка: 0 — DateTime::__construct() [datetime.—construct]:
Не могу зайти в профиль компонента JomSocial из-за данной ошибки: 0 — DateTime::__construct() .
DateTime.Now для DateTime sql server
Я понимаю что данный вопрос не раз открывался но в поисках решения гуглю уже 2-ой день и все.
Источник
Преобразование времени в миллисекунды в Java
Изучите несколько способов преобразования объектов времени Java в миллисекунды эпохи Unix
Автор: baeldung
Дата записи
1. Обзор
В этом кратком руководстве мы проиллюстрируем несколько способов преобразования времени в миллисекунды эпохи Unix в Java .
Более конкретно, мы будем использовать:
- Ядро Java java.util.Дата и Календарь
- API даты и времени Java 8
- Joda-Библиотека времени
2. Ядро Java
2.1. Использование Даты
Во-первых, давайте определим свойство millis , содержащее случайное значение в миллисекундах:
Мы будем использовать это значение для инициализации различных объектов и проверки результатов.
Далее, давайте начнем с Даты объекта:
Теперь мы готовы преобразовать дату в миллисекунды, просто вызвав метод getTime () :
2.2. Использование календаря
Аналогично, если у нас есть объект Calendar , мы можем использовать метод getTimeInMillis() :
3. Java 8 Date Time API
3.1. Использование мгновенного
Проще говоря, Instant-это точка на временной шкале эпохи Java.
Мы можем получить текущее время в миллисекундах из Instant :
В результате метод toEpochMilli() возвращает то же количество миллисекунд, что и ранее.
3.2. Использование LocalDateTime
Аналогично, мы можем использовать Java 8 API даты и времени для преобразования LocalDateTime в миллисекунды:
Сначала мы создали экземпляр текущей даты. После этого мы использовали метод toEpochMilli() для преобразования ZonedDateTime в миллисекунды.
Как мы знаем, LocalDateTime не содержит информации о часовом поясе. Другими словами, мы не можем получить миллисекунды непосредственно из LocalDateTime экземпляра .
4. Джода-Время
Хотя Java 8 добавляет большую часть функциональности Joda-Time, мы можем использовать эту опцию, если мы находимся на Java 7 или более ранней версии.
4.1. Использование Мгновенного
Во-первых, мы можем получить текущие системные миллисекунды из экземпляра класса Joda-Time | Instant с помощью метода getMillis() :
4.2. Использование DateTime
Кроме того, если у нас есть экземпляр Joda-Time DateTime :
Затем мы можем получить миллисекунды с помощью метода getMillis() :
5. Заключение
В заключение в этой статье показано, как преобразовать время в миллисекунды в Java.
Наконец, как всегда, полный код этой статьи доступен на GitHub .
Источник