[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Преобразовать время в unixtime
LRCenter
Есть дата, например - "2011.04.01.[22:46:16]",
известен ее формат - "Y.m.d.[H:i:s]"

Как на основании этих данных преобразовать дату в unixtime.
Есть ли в php какая нибудь универсальная функция для этого? Чтоб при изменении формата и не приходилось ничего менять в функции.

Как-бы обратная date($dateformat, time()); ?



Спустя 24 минуты, 10 секунд (1.04.2011 - 20:14) Trianon написал(а):
Цитата
Чтоб при изменении формата и не приходилось ничего менять в функции.

Это как?
Святым духом угадывать, что изменилось?

Спустя 12 минут, 57 секунд (1.04.2011 - 20:27) LRCenter написал(а):
Trianon
В смысле духом? Вся инфа-то есть.

Есть формат:
$dateformat="Y.m.d.[H:i:s]";


Есть время:
$nowtime=time();


Можно узнать время в заданом формате.
$textdate=date($dateformat, $nowtime);
echo $textdate;



А как теперь из него обратно получить unixtime?
У нас есть формат ($dateformat) и время в нем ($textdate).
Что еще надо-то?

Спустя 1 минута, 10 секунд (1.04.2011 - 20:28) LRCenter написал(а):
Имеется ввиду что в функцию передаются два параметра формат и время в нем, а возвращается unixtime.

Спустя 24 минуты, 49 секунд (1.04.2011 - 20:53) T1grOK написал(а):
Лучше всего хранить и работать с датой в юникс формате везде. Но раз уж спрашиваешь:

SELECT UNIX_TIMESTAMP(`date`) as `date` FROM table

Спустя 23 минуты, 45 секунд (1.04.2011 - 21:17) LRCenter написал(а):
а нафиг мне sql?
Я про универсальное и чистое решение на php спрашиваю.

Спустя 10 минут, 43 секунды (1.04.2011 - 21:27) Trianon написал(а):
можно с помощью preg_replace перейти к формату "YYYY-MM-DD HH:MM:SS" , а последний уже функцией strtotime превращается в юникстайм.

Спустя 1 минута, 38 секунд (1.04.2011 - 21:29) T1grOK написал(а):
Гы-гы! Вот это я ушами прохлопал. smile.gif. Да Trianon дело говорит

Спустя 13 часов, 22 минуты, 10 секунд (2.04.2011 - 10:51) LRCenter написал(а):
Да, спасибо. Сделал на регулярках, хотя не люблю я их, а что делать)

Спустя 26 минут, 38 секунд (2.04.2011 - 11:18) ApuktaChehov написал(а):
смотрите в сторону strtotime()

Спустя 43 минуты, 7 секунд (2.04.2011 - 12:01) ИНСИ написал(а):
помню где-то linker делал подобное через strtotime() и было очень красиво smile.gif

Спустя 1 час, 5 минут, 13 секунд (2.04.2011 - 13:06) Snus написал(а):
LRCenter
  function getFDate($date,$format){
return date($format, strtotime($date));
};

echo getFDate('02.04.2011','Y-m-d');

Спустя 3 часа, 53 минуты, 10 секунд (2.04.2011 - 16:59) LRCenter написал(а):
Snus
Предложеная функция возвращает дату в заданном формате, а мне надо наоборот зная формат и имея дату-время в нем, получить unixtime. Нетривиальная задача.

Без регулярок, видимо, не обойтись.

Спустя 5 минут, 13 секунд (2.04.2011 - 17:04) LRCenter написал(а):
strtotime(), не работает например с такой датой - "02.04.2011.[20:04:43]", а мне нужно УНИВЕРСАЛЬНОЕ решение

Спустя 1 минута, 55 секунд (2.04.2011 - 17:06) Trianon написал(а):
Цитата
а мне надо наоборот зная формат и имея дату-время в


Что означают слова "зная формат"?

Спустя 9 минут, 51 секунда (2.04.2011 - 17:16) LRCenter написал(а):
Trianon
Сигнатура по каторой будет разобрана дата, как иначе узнать, что это, день, месяц или год? А может быть день недели?


Это формат - d.m.Y.[H:i:s]
А это пример времени в нем - 02.04.2011.[20:13:01]

как узнать время линукс до секунды(без всяких округлений), на основании этих данных?

Спустя 1 минута, 47 секунд (2.04.2011 - 17:18) LRCenter написал(а):
Перерыл весь инет нет ни одного нормального универсального решения для этой задачи. Как-так?

Спустя 24 минуты, 34 секунды (2.04.2011 - 17:43) Trianon написал(а):
LRCenter
d.m.Y.[H:i:s] - это спецификаторы прямого преобразования (из unixtime в строку человеческого представления)
Обратное преобразование они детерминированно могут и не описать.
Обратную функцию, которая корректно отрабатывала бы любые сочетания строки формата даты и момента времени, написать не получится.
Пример: даты 2 декабря и 21 февраля 2011 года в формате 'jny' будут выглядеть одинаково: 21211



С другой стороны, имярек, которому известен формат и известно значение, обычно обладает и исходным unixtime smile.gif
Может просто взять прямо его?


Спустя 23 минуты, 10 секунд (2.04.2011 - 18:06) LRCenter написал(а):
не мой случай. Ладно, ниче поизвращался и сделал, правда не универсально, зато без регулярок.

Спасибо за участие.

Спустя 19 часов, 36 минут, 31 секунда (3.04.2011 - 13:42) Snus написал(а):
Цитата (LRCenter @ 2.04.2011 - 14:04)
strtotime(), не работает например с такой датой - "02.04.2011.[20:04:43]", а мне нужно УНИВЕРСАЛЬНОЕ решение

Это не формат даты, а жидкий экскремент бешенного орангутанга. Изначально нужно заносить данные, которые может понять не только автор, но и машина и другие пользователи системы.

Спустя 5 часов, 27 минут, 53 секунды (3.04.2011 - 19:10) LRCenter написал(а):
Snus
Спасибо, за совет. Приму к сведению.


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.