| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > TimeStamp |
| Автор: ShurikA 15.12.2005, 19:30 |
| Прочёл вот это: http://forum.vingrad.ru/index.php?showtopic=66026&unread=1&hl=getdateinstance но всё таки так и не понял как мне из фаила выташить время его создания в виде TimeStamp (типа в секундах с хачало "веков" |
| Автор: LSD 15.12.2005, 20:14 |
| Стандартными средствами можно вытащить только время последней модификации file.lastModified(), тем более если я не путаю то в ext2 нет даты создания файла (пусть меня линуксоиды попрявят если что). |
| Автор: ShurikA 15.12.2005, 20:22 | ||
В принсепе цель такая: работаь с фаилами старше чем, скажем, 24 часа. Видел всякие примеры через Calendar Class. Но чего то они какие то кривые для стой простой процедуры. Содержат кучу всего не нужного. а, и ещё, текущее время тоже можно вытащить в формате TimeStamp? P.S. Извиняюсь за слоль элементарные вещи, так как обычно работал в юниксе, а там всё значительно проще... |
| Автор: LSD 15.12.2005, 20:44 | ||
file.lastModified() - дает время в милисекундах от 1 января 1970 года GMT (это long). Для работы с датой ты можешь использовать calendar.setTimeInMillis(file.lastModified()) и дальше уже анализировать дату. Но если у тебя простые задачи по работе с временными интервалами, то можно обойтись и без этого. Например что файл "не старше" 24-х часов можно так: (System.currentTimeMillis() - file.lastModified()) < 24 * 60 * 60 * 1000.
TimeStamp - это класс для работы с БД, там еще есть наносекунды, но такая точность тебе я думаю не нужна. А стандартным классом для работы с датой-временем является java.util.Date, он хранить время с точностью до миллисекунд. |
| Автор: ShurikA 15.12.2005, 20:49 | ||
Ты уверен что в милисекундах? Опять же, в обычных операционках (как Юникс) понятие TimeStamp -> секунды от 1 января 1970 года GMT... |
| Автор: LSD 15.12.2005, 20:52 | ||
Абсолютно, http://vingrad.ru/JAVA-ART-002950. |
| Автор: ShurikA 15.12.2005, 20:58 |
| LSD О!!! Вот это я как раз и искал Кстати, в этом деле есть ещё одна проблемма: Допустим фаилы находятся на серваке, при этом System.currentTimeMillis() даёт локальное время, если я не ошибаюсь. А теперь представь себе сервер находящийся на другой стороне земного шара и я к нему подключаюсь через ФТП... Уже не говоря о том что время на локалке может быть выставленно не правильно. |
| Автор: LSD 15.12.2005, 21:11 |
| Тогда надо как-то синхронизировать время, сам понимаешь если время разошлось неизвестно насколько, то и результат не предсказуем. Кстати Jakarta Commons Net поддерживает Network Time Protocol, так что с его помощью можно синхронизировать время, только установить системное время на чистой Java нельзя. |
| Автор: ShurikA 15.12.2005, 21:19 | ||
Спасибо, это то что нужно. |
| Автор: ShurikA 16.12.2005, 00:35 | ||
C этим не пройдёт. Так как для чтения фаилов на сервере я пользуюсь FTPFiles[] у этого класса нет такой функции... |
| Автор: LSD 16.12.2005, 12:31 |
| Но есть функция getTimestamp(), ты получаешь java.util.Calendar, из него можно сделать getTimeInMillis() и получишь время в миллисекундах. А можешь и непосредственно им оперировать, смотря что тебе от даты нужно. |
| Автор: ShurikA 16.12.2005, 14:27 | ||
ОК, это я сделал. Но вот достфть северное время мне не удаётся... Просто не нахожу как. |
| Автор: LSD 16.12.2005, 17:22 | ||
Это не сложно:
Offset - это то на сколько отличается время на локальной машине, от времени на сервере. Надо просто прибавить его к System.currentTimeMillis() и получим время на сервере. |
| Автор: ShurikA 16.12.2005, 19:17 | ||||
В результате я так и сделал, но думал что есть прямой путь. |