Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / операция с датой / 9 сообщений из 9, страница 1 из 1
28.03.2012, 20:58:24
    #37728393
операция с датой
Народ, может кто-то в курсе.
Есть ТЕКСТ вида: "20 июл 2004 18:55" ($str = "20 июл 2004 18:55";)

Надо получить вид "20-06-2004 18:55:00" и сделать Датой.

В принципе пытаюсь сделать мудреным способом:

Код: php
1.
2.
3.
4.
5.
6.
$str = "20 июл 2004 18:55";
$a = array (" ",":");
$date = str_replace($a,'/',$str);
list($d, $m, $y, $h, $min, $s) = explode('/', $date);
$mk=mktime($h, $min, 0, $m, $d, $y);
$d=strftime('%F %T',$mk);



Тут осталось только каким то образом заменять месяц на числовой, и по идее будит пахать. Но что-то мне подсказывает что это не панацея :)
...
Рейтинг: 0 / 0
28.03.2012, 23:05:57
    #37728514
неТолик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
операция с датой
может как то так
Код: php
1.
date("d.m.y H:i",strtotime($str)); 
...
Рейтинг: 0 / 0
29.03.2012, 07:33:47
    #37728752
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
операция с датой
А откуда вы даты в таком виде берете?
...
Рейтинг: 0 / 0
29.03.2012, 12:54:22
    #37729276
операция с датой
?А откуда вы даты в таком виде берете?

Из файла :)
Есть файлик, который содержит массив данных, сжатый Zlib. Откуда и можно ли заново получить файлик... хз, нет :)
...
Рейтинг: 0 / 0
29.03.2012, 12:57:39
    #37729289
операция с датой
неТоликможет как то так
Код: php
1.
date("d.m.y H:i",strtotime($str)); 




Код: php
1.
2.
$date = "20 июл 2004 18:55";
echo date("d.m.y H:i",strtotime($date)); 


Выводит: 01.01.70 04:00

Думаю, мой вариант самый оптимальный...
...
Рейтинг: 0 / 0
29.03.2012, 13:00:22
    #37729297
операция с датой
В итоге у меня получилось вот что:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function conver_date($date) {
$date= trim($date);
$a = array (" ",":","//");
$mes = array("янв"=>'1',"фев"=>'2',"мар"=>'3',"апр"=>'4',"май"=>'5',"июн"=>'6',"июл"=>'7',"авг"=>'8',"сен"=>'9',"окт"=>'10',"ноя"=>'11',"дек"=>'12');
if(empty($date))
{$dt = "1/апр/2014/10/30";}
else {$dt = str_replace($a,'/',$date);}
list($d, $m, $y, $h, $min, $s) = explode('/', $dt);
$mk = mktime($h, $min, 0, $mes[$m], $d, $y);
$d = strftime('%F %T',$mk);
unset($a); unset($mes);
return $d;
}



В принципе работает, и вполне сойдет, как кастыль, для разового переноса данных из файла в базу.
...
Рейтинг: 0 / 0
29.03.2012, 13:05:37
    #37729313
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
операция с датой
Код: php
1.
2.
3.
4.
str_replace(
  array(' янв ', ' фев ', ... ' дек '),
  array('-01-', '-02-', ... '-12-'),
  $str) . ':00';
...
Рейтинг: 0 / 0
29.03.2012, 13:06:55
    #37729315
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
операция с датой
Просто ЛехаДумаю, мой вариант самый оптимальный...
ой ли?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$mes = array(
" янв "=>'.1.',
" фев "=>'.2.',
" мар "=>'.3.',
" апр "=>'.4.',
" май "=>'.5.',
" июн "=>'.6.',
" июл "=>'.7.',
" авг "=>'.8.',
" сен "=>'.9.',
" окт "=>'.10.',
" ноя "=>'.11.',
" дек "=>'.12.');
$date = "20 июл 2004 18:55";
echo date("d.m.y H:i",strtotime(strtr($date, $mes))); 


ps. Исходный массив проще даже сгенерить... просто лень было, пришлось печатать)
...
Рейтинг: 0 / 0
29.03.2012, 13:20:13
    #37729347
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
операция с датой
Просто Леха,

Код: php
1.
2.
3.
4.
5.
function conver_date($str) {
	$months = array_flip(array(1=>'янв','фев','мар','апр','май','июн','июл','авг','сен','окт','ноя','дек'));
	list($d, $m, $y, $time) = explode(' ', trim($str));
	return sprintf("%04d-%02d-%02d", $y,$months[$m],$d).' '.$time.':00';	
}
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / операция с датой / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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