powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразовать время из String в long
8 сообщений из 8, страница 1 из 1
Преобразовать время из String в long
    #37760241
abc_da
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
Вопрос дурацкий, но голова уже кипит и никак не получается.
Задача:
Есть срока, содержащая некоторое значение времени в формате HH:mm:ss, например "00:00:04", хочу преобразовать ее в число миллисекунд. Соответственно, для данного примера, ответ должен быть: 4000.
Пробовал Date.parse(), Time.parse(), DateFormat, всякие штуки из joda-time т.д., получаю всё, что угодно, но не то, что нужно(Отрицательное число).

Пример кода:
Код: java
1.
2.
3.
4.
DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
Date tDuration = timeFormat.parse(sDuration);

long result = tDuration.getTime()



Подскажите, пожалуйста, что я делаю не так?
...
Рейтинг: 0 / 0
Преобразовать время из String в long
    #37760372
abc_da,

не учитываешь, что твоя программа работает в России, а время тебе хочется получить "как будто мы находимся в Гринвиче"

Код: java
1.
2.
		DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss z");
		Date tDuration = timeFormat.parse("00:00:04 GMT+00:00");
...
Рейтинг: 0 / 0
Преобразовать время из String в long
    #37760388
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, abc_da!

> Есть срока, содержащая некоторое значение времени в формате HH:mm:ss,
> например "00:00:04", хочу преобразовать ее в число миллисекунд.

Число миллисекунд от полночи?
Тогда не мучайся, бей строку на h=0, m=0, s=4, потом тупо умножай
((h*60+m)*60+s)*1000

> Пробовал Date.parse(), Time.parse(), DateFormat, всякие штуки из
> joda-time т.д., получаю всё, что угодно, но не то, что
> нужно(Отрицательное число).

Они служат для работы с моментом времени в календаре. Тебе же надо
момент времени в абстрактных сутках. Т.е. не надо использовать их вообще.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразовать время из String в long
    #37760625
abc_da
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GKS_SamaraЧисло миллисекунд от полночи?
Тогда не мучайся, бей строку на h=0, m=0, s=4, потом тупо умножай
((h*60+m)*60+s)*1000


Вчера ночью я так и поступил в итоге, но как-то это уж больно топорно. Впрочем, работает и ладно.

календаревед, спасибо за разъяснение, ваш вариант тоже работает, теперь хоть понял, в чем было дело.


А между тем, у меня появилась новая сложность.
Затевалось-то всё ради того, чтобы временные промежутки можно было складывать, вычитать... и в итоге снова показывать в строковом формате(HH:mm:ss). Так вот, когда после выполнения калькуляций я пытаюсь отформатировать всё это назад в строку, снова появляется мой часовой пояс и лишние 3 часа. Как от этого избавиться?

Мой код:
Код: java
1.
2.
3.
Date d = new Date(millis); // millis = 280000 , "00:04:40"
DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss z");
return timeFormat.format(d);// получаю 03:04:40 [MSK] вместо 00:04:40[GMT]
...
Рейтинг: 0 / 0
Преобразовать время из String в long
    #37760646
abc_da,
Код: java
1.
		timeFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
...
Рейтинг: 0 / 0
Преобразовать время из String в long
    #37760652
кстати, такую же строчку можно использовать для обратного преобразования, чтобы указывать временную зону не в строке, а самому DateFormat.
...
Рейтинг: 0 / 0
Преобразовать время из String в long
    #37760663
abc_da
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое!
...
Рейтинг: 0 / 0
Преобразовать время из String в long
    #37760676
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, abc_da!

> Затевалось-то всё ради того, чтобы временные промежутки можно было
> складывать, вычитать... и в итоге снова показывать в строковом
> формате(HH:mm:ss). Так вот, когда после выполнения калькуляций я пытаюсь
> отформатировать всё это назад в строку, снова появляется мой часовой
> пояс и лишние 3 часа. Как от этого избавиться?

Вообще тут надо либо брать LocalTime (если он подходит), либо писать
самому. java.util.Date ОЧЕНЬ сильно завязан на даты и таймзоны.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразовать время из String в long
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]