Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > date в прошлом =)


Автор: DenWPF 13.2.2010, 13:17
Как достать время вчерашнее.
date("d/m/Y") - выдает какой сегодня день\месяц\год а мне надо что бы выдало день-1\месяц\год

Автор: Ипатьев 13.2.2010, 13:35
нужно прочитать документацию на эту функцию.

Добавлено через 37 секунд
это очень несложно. набрать в браузере 
php.net/date
гораздо быстрее, чем писать на форум 

Автор: GZep 13.2.2010, 13:47
вроде так
Код

$d = date("d/m/Y", time() - 86400);

но, вроде, 1-го января каждого года работать не будет...

Автор: segrey 13.2.2010, 14:00
Код
date("d/m/Y", strtotime("-1 day"))

Автор: ksnk 13.2.2010, 14:12
Код

echo strtotime("-1 day"), "\n";


Добавлено через 1 минуту и 40 секунд
опоздал ... smile

Автор: NLspieler 13.2.2010, 14:16
Цитата

но, вроде, 1-го января каждого года работать не будет...

Вы уверены?

Автор: segrey 13.2.2010, 15:10
Цитата(NLspieler @ 13.2.2010,  12:16)
Цитата

но, вроде, 1-го января каждого года работать не будет...

Вы уверены?

будет косяк с переходом на новое время
Код

$time = mktime(23,0,0,10,31,2010);
echo date('d', $time)."\n";
echo date('d', $time - 86400)."\n";
echo date('d', strtotime('-1 day', $time))."\n";

Автор: DenWPF 13.2.2010, 16:02
Всем спасибо

Автор: GZep 13.2.2010, 21:04
Цитата(NLspieler @  13.2.2010,  14:16 Найти цитируемый пост)
Вы уверены? 

к сожалению не уверен. smile  Если кто знает - пусть отпишется - интересно самому... smile 

Автор: DenWPF 14.2.2010, 00:59
блин..эти даты..
есть 3 типа даты..как их перевести в нужный формат?

07-Mar-2011
07-02-2011
07.02.2011

Автор: Fortop 14.2.2010, 10:53
http://php.net/datetime

Автор: Ипатьев 14.2.2010, 11:24
не, ну тут, скорее, надо руками разбирать

Автор: Fortop 14.2.2010, 12:07
Цитата(Ипатьев @  14.2.2010,  10:24 Найти цитируемый пост)
не, ну тут, скорее, надо руками разбирать 

1я 100% парсится автоматом.

следующие два формата могут быть проблемы, хотя конкретно эти две даты корректно отпарсились.

Автор: DenWPF 14.2.2010, 12:50
date_parse - всё отлично

Автор: Fortop 14.2.2010, 12:55
На всякий случай рекомендую всегда пользоваться ISO 8601:2004 и заставлять пользователей вводить дату именно в таком формате

yyyy-mm-dd

Читается всеми, понимается всеми.

Автор: DenWPF 14.2.2010, 15:46
я привык ровно на оборот.

Автор: Fortop 14.2.2010, 16:22
Цитата(DenWPF @  14.2.2010,  14:46 Найти цитируемый пост)
я привык ровно на оборот. 

Продемонстрируй-ка сортировку по дате в формате "ровно на оборот".

Автор: IgorIV 14.2.2010, 16:43
Fortop, вопрос не в том делать сортировку по дате, а в том, что такой формат даты не по-русски. И он весьма непривычный. Сам посмотри на дату своей регистрации, дату поста.

Автор: DenWPF 14.2.2010, 17:37
блин, какая лажа с этими датами.
date_parse - отработал нормально..но сохраняет в виде 1.2.2010 а мне нужно что бы с нулями было. в ручную не прет это переделываит..есть функция?

Автор: Fortop 14.2.2010, 17:47
Цитата(IgorIV @  14.2.2010,  15:43 Найти цитируемый пост)
а в том, что такой формат даты не по-русски. И он весьма непривычный. Сам посмотри на дату своей регистрации, дату поста. 

Да? А это
Цитата(DenWPF @  13.2.2010,  23:59 Найти цитируемый пост)
07-Mar-2011
07-02-2011

Два обалденно русских формата?

А это 
ГОСТ 7.64-90 
крайне нерусский стандарт?

Впрочем, изначальная нотация dd.mm.yy в России имеет свои корни от DIN, оттуда же и метрический стандарт начал проникать в Россию.

Вопрос в том, что когда ты работаешь в учреждениях где регулярно лопатят даты и/или информацию по датам - то ты резко привыкаешь к "правильному формату" даже не оглядываясь на всякие ISO и ГОСТ.
Ибо выясняется - что "по-русски" это "через *опу".
Впрочем равно как и "по-американски"

А остальным откровенно безразницы dd-mm-yyyy или yyyy-mm-dd

Добавлено через 1 минуту и 17 секунд
Цитата(DenWPF @  14.2.2010,  16:37 Найти цитируемый пост)
есть функция? 

Есть мануал, который нужно читать.

Автор: DenWPF 14.2.2010, 17:56
если бы вдуплил его...
date_parse вообще по нему не чего не нашел=(

Автор: IgorIV 14.2.2010, 18:37
Fortop, ???
http://www.gost.ru/wps/portal/
Сайт Федерального агентства. Значит всё должно быть по Госту. Смотрим страницу. 
Цитата

Заседание Комиссии по модернизации и технологическому развитию, посвящённое проблемам технического регулирования (20 января 2010 г., г. Липецк)


Цитата

Указ Президента РФ от 4 июня 2008 г. № 889 "О некоторых мерах по повышению энергетической и экологической эффективности российской экономики"

Цитата

11 декабря 2009 года подписан Меморандум о взаимопонимании по сотрудничеству в области метрологии Ростехрегулированием и Болгарским институтом по метрологии

Почему не по Госту? Может потому как 
Цитата

Настоящий стандарт устанавливает общие требования к представлению дат и времени дня в научно-технических документах. 
Требования, установленные настоящим стандартом, распространяются на автоматизированные системы научно-технической информации. 


И требовать от пользователей вводить дату именно в этом формате весьма абсурдно. Вот получив от пользователя дату в любом формате можно (нужно) преобразовать её именно в тот формат о каком и говорите.


Автор: DenWPF 14.2.2010, 18:45
да-да...вот как это сделать?0))

Автор: Fortop 14.2.2010, 19:00
Цитата(IgorIV @  14.2.2010,  17:37 Найти цитируемый пост)
Значит всё должно быть по Госту. 

Да ну? А по какому?
Ваша наивность меня вдохновляет.

Цитата(IgorIV @  14.2.2010,  17:37 Найти цитируемый пост)
Вот получив от пользователя дату в любом формате можно преобразовать её

Точно можно?
Ну преобразуйте 10/11/09 
А вот еще 11/27/09

Автор: DenWPF 14.2.2010, 19:13
нет нет ))
лушче
 07-Mar-2011
07-02-2011
07.02.2011

и что бы с 0 было.

Автор: IgorIV 14.2.2010, 21:29
Цитата(Fortop @ 14.2.2010,  19:00)
Цитата(IgorIV @  14.2.2010,  17:37 Найти цитируемый пост)
Значит всё должно быть по Госту. 

Да ну? А по какому?
Ваша наивность меня вдохновляет.


По вышеприведенному - ГОСТ 7.64-90 

Fortop, а смысл? smile
http://yandex.ru/search/advanced? На дату идут 3 переменные. Как хочешь, так и комбинируешь. 
За сим прекращаю спорить с проффессионалом. smile

Автор: sTa1kEr 14.2.2010, 22:11
Цитата(DenWPF @  14.2.2010,  20:13 Найти цитируемый пост)
и что бы с 0 было. 

http://php.net/strtotime
http://php.net/date

Цитата(Fortop @  14.2.2010,  13:55 Найти цитируемый пост)
На всякий случай рекомендую всегда пользоваться ISO 8601:2004 и заставлять пользователей вводить дату именно в таком формате

Лучше выводить пользователю какой-нибудь http://jqueryui.com/demos/datepicker/#localization или в крайнем случае комбобоксы. А внутри скрипта однозначно лучше использовать unix timestamp. Для вывода даты лучше позволить пользователю самому выбрать предпочитаемый формат и/или выбирать формат в зависимости от локали пользователя.

Кстати,  ISO 8601, имхо, удобный и привычный формат только для программистов.

Добавлено @ 22:20
Код

setlocale(LC_ALL, "ru_RU.UTF-8");
var_dump(strftime("%x")); // string(10) "14.02.2010"

Автор: IgorIV 14.2.2010, 22:46
Код


list($d, $m, $y) =   explode ('-',"07-02-2009") ;
echo $y .'-' . $m .'-' . $d;
echo date ("Y-m-d",strtotime("11/27/09")) . "<br />";
echo date ("Y-m-d",strtotime("11/10/09")) . "<br />"; 
echo date ("Y-m-d",strtotime("21/10/09")) . "<br />"; 



2009-02-07
2009-11-27
2009-11-10
1970-01-01

По последнему примеру вроде как должно работать так, но в 5.3
date_parse_from_format("d.m.y", $date)

Автор: Fortop 14.2.2010, 23:48
Цитата(sTa1kEr @  14.2.2010,  21:11 Найти цитируемый пост)
Лучше выводить пользователю какой-нибудь календарик или в крайнем случае комбобоксы.

Это удобно в единичных регистрациях.
Но когда у тебя идут в набор платежные документы/акты/договора, то тыкать в календарик или бегать по комбобоксам - мягко говоря неудобно. 
Нужно максимум клавиатурных и автоматических переходов по полям (без мышки). 
В сочетании с печатью вслепую 500-700 первичных документов в день одним операционистом далеко не предел. (мой личный рекорд 15ти-летней давности 450 документов за 3 часа)

Цитата(sTa1kEr @  14.2.2010,  21:11 Найти цитируемый пост)
Кстати,  ISO 8601, имхо, удобный и привычный формат только для программистов.

Ты ошибаешься - любая фин/стат-отчетность(да и вообще везде, где идет много дат) в разрезе дней много удобнее именно в таком формате.

Цитата(IgorIV @  14.2.2010,  21:46 Найти цитируемый пост)
2009-11-27
2009-11-10

Чудно, вот и получите граблями по лбу. 
Поскольку даты были 27 ноября 2009 года и 10 ноября 2009 года (а могло быть и 11 октября 2009 года ), только одну дату я взял с факса из США, вторую из Франции. И как бы вы ни шаманили - угадать что пользователь подразумевал под 10/11/09 Вам не под силу.
А так - да преобразовывайте.... до позеленения....

Поэтому повторюсь еще раз - принимайте дату от пользователя в одном единственном формате (наоболее оптимальным для этого является ISO 8601)

Выводить дату можете как хотите, но смысла в различных версиях формата 0, пока вы не начнете выводить дату словами. Да и выводить лучше в том формате в котором принимаете, дабы не создавать путаницы.

Автор: sTa1kEr 15.2.2010, 00:59
Цитата(Fortop @  15.2.2010,  00:48 Найти цитируемый пост)
Но когда у тебя идут в набор платежные документы/акты/договора, то тыкать в календарик или бегать по комбобоксам - мягко говоря неудобно. 

Цитата(Fortop @  15.2.2010,  00:48 Найти цитируемый пост)
Ты ошибаешься - любая фин/стат-отчетность(да и вообще везде, где идет много дат) в разрезе дней много удобнее именно в таком формате.

Ну так для бухгалтеров, которые имеют дела с документами/актами/договорами и создавайте системы с тестовыми полями для дат. А обычных пользователей, которым необходима единичная регистрация, не надо заставлять вводить даты в текстовые поля, да и еще и в формате не соответствующим их локали.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)