Мне нужно преобразовать произвольное количество миллисекунд в дни, часы, минуты в секунду.
Например: 10 дней, 5 часов, 13 минут, 1 секунда.
date
time
string-formatting
datetime-format
FlySwat
источник
источник
Ответы:
Что ж, поскольку никто больше не подошел, я напишу простой код, чтобы сделать это:
Я просто рад, что вы остановились на днях и не просили месяцами. :)
Обратите внимание, что в приведенном выше примере предполагается, что это
/
усечение целочисленного деления. Если вы используете этот код на языке, который/
представляет деление с плавающей запятой, вам нужно будет вручную усечь результаты деления по мере необходимости.источник
Пусть A будет количеством миллисекунд. Тогда у вас есть:
и так далее (
%
является оператором модуля).Надеюсь это поможет.
источник
/
выполняется деление с плавающей запятой, вам необходимо усечь значение. В других ответах предполагается, что/
выполняется целочисленное деление.Оба решения ниже используют javascript (я понятия не имел, что решение не зависит от языка!). Оба решения нужно будет расширить при захвате продолжительности
> 1 month
.Решение 1. Используйте объект Date
дает:
Библиотеки полезны, но зачем использовать библиотеки, если вы можете заново изобрести колесо! :)
Решение 2. Напишите свой собственный парсер
Создает объект «длительность» с любыми необходимыми полями. Тогда форматирование метки времени становится простым ...
дает:
источник
return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label);
var nonZero = function(u){ return !u.startsWith("0"); }; // convert object to a string representation... dur.toString = function(){ return units.reverse().map(function(u){ return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label); }).filter(nonZero).join(', '); };
Apache Commons Lang имеет DurationFormatUtils, в котором есть очень полезные методы, такие как formatDurationWords .
источник
Вы должны использовать функции datetime на любом языке, который вы используете, но, просто для удовольствия, вот код:
источник
Это метод, который я написал. Он принимает
integer milliseconds value
и возвращаетhuman-readable String
:источник
источник
Я бы предложил использовать любые функции / библиотеки даты / времени, которые предоставляет ваш язык / фреймворк по выбору. Также ознакомьтесь с функциями форматирования строк, поскольку они часто предоставляют простые способы передачи меток даты и времени и вывода строки в удобочитаемом формате.
источник
Ваш выбор прост:
источник
источник
Это должно напечатать: 0,0: 1: 9
источник
Почему бы просто не сделать что-то вроде этого:
var ms = 86400;
вар секунд = мс / 1000; //86.4
вар минут = секунд / 60; //1.4400000000000002
вар часов = минут / 60; //0.024000000000000004
вар дней = часов / 24; //0.0010000000000000002
И работа с точностью с плавающей запятой, например Number (minutes.toFixed (5)) //1.44
источник
В Java
Выдает что-то вроде этого:
источник
Я не могу прокомментировать первый ответ на ваш вопрос, но есть небольшая ошибка. Вы должны использовать parseInt или Math.floor для преобразования чисел с плавающей запятой в целые числа, i
Лично я использую CoffeeScript в своих проектах, и мой код выглядит так:
источник
Это решение. Позже вы можете разделить на ":" и взять значения массива
источник
Вот мое решение с использованием TimeUnit.
ОБНОВЛЕНИЕ: я должен отметить, что это написано на Groovy, но Java почти идентична.
источник
Гибкий способ сделать это:
(Не для текущей даты, но достаточно для продолжительности)
NB: вы также можете установить timeSteps в качестве параметра, если хотите контролировать временные диапазоны.
как использовать (скопировать тест):
источник
Предлагаю использовать http://www.ocpsoft.org/prettytime/ библиотеку ..
очень просто получить временной интервал в удобочитаемой форме, например
PrettyTime p = new PrettyTime(); System.out.println(p.format(new Date()));
он будет напечатан как «моменты из этого момента»
другой пример
PrettyTime p = new PrettyTime()); Date d = new Date(System.currentTimeMillis()); d.setHours(d.getHours() - 1); String ago = p.format(d);
затем строка назад = "1 час назад"
источник
Вот более точный метод в JAVA, я реализовал эту простую логику, надеюсь, это поможет вам:
источник