Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формат вывода даты и времени, нюансы использования strftime 
V
    Опции темы
sani79
Дата 9.2.2007, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 14.12.2005

Репутация: нет
Всего: нет



Добрый день! Снова обращаюсь за помощью к уважаемым коллегам. Проблема такая: нужно из MSSQL (тип поля datetime 8) вывести дату и время в формате заданным в локали. Попытался использовать strftime ничего не вышло, а точнее:

1.  
Код

strftime("%c", strtotime($row["InputTime"]))
 - выводит не зависимо от значения из базы "01/01/70 03:00:00"
2. 
Код

strftime("%c", $row["InputTime"])
 - то же что и в первом случае + ошибка:Notice: A non well formed numeric value encountered in ...

Подскажите пожалуйста в чем ошибка? Может есть другие варианты добится цели?

P.S. В базе значения хранятся в таком формате "11.09.2006 10:25:56". Если выводить 
Код

$row["InputTime"]
, то значения выводятся правильно, но не в том формате, вот в таком "27 янв 2007 7:27".
PM MAIL   Вверх
Shaggie
Дата 9.2.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Проблема в формате, дата должна быть записана как "ГГГГ-ММ-ДД чч:мм:сс"

Если не можешь изменить формат хранения даты в БД, пользуйся регуляркой.

Код

strftime("%c", strtotime(preg_replace("/(\d{2})\.(\d{2})\.(\d{4})/", "$3-$2-$1", $row["InputTime"])));



--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
sani79
Дата 9.2.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 14.12.2005

Репутация: нет
Всего: нет



Shaggie, Спасибо за совет. Изменить в базе действительно нереально. С вышеописанным кодом к сожалению не вышло, так ка окозалось что из базы у меня все таки возвращается в другом формате, а именно вот так: 30 янв 2007 17:41
PM MAIL   Вверх
Shaggie
Дата 9.2.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Код

preg_match("/(\w{3})/",$row["InputTime"], $qw); // название месяца

switch($qw[0]) {
    case "янв": $month="01"; break;
    case "фев": $month="02"; break;
    case "мар": $month="03"; break;
    case "апр": $month="04"; break;
    case "май": $month="05"; break;
    case "июн": $month="06"; break;
    case "июл": $month="07"; break;
    case "авг": $month="08"; break;
    case "сен": $month="09"; break;
    case "окт": $month="10"; break;
    case "ноя": $month="11"; break;
    case "дек": $month="12"; break;
} // переводим в число

strftime("%c", strtotime(preg_replace("/(\d{2})\s\w{3}\s(\d{4})/", "$2-$month-$1", $row["InputTime"])));

Если я напорол с названиями месяцев - поправь.

Это сообщение отредактировал(а) Shaggie - 9.2.2007, 13:19


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
sani79
Дата 9.2.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 14.12.2005

Репутация: нет
Всего: нет



Shaggie, Спасибо, это подходит.
PM MAIL   Вверх
AtomoS
Дата 18.10.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Столкнулся с похожей проблеммой.

Есть таблица:
Код

CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`title` tinytext NOT NULL,
`body` text NOT NULL,
`posted` date NOT NULL default '0000-00-00',
`autor` text NOT NULL,
`hide` enum('show','hide') NOT NULL default 'show',
PRIMARY KEY  (`id`));


Данные по времени хранятся в формате 0000-00-00

Вывожу данные (время) из таблицы:
Код

$query = "SELECT * FROM news order by id";
  $sql = mysql_query($query);
  while($news = mysql_fetch_array($sql))
{
    $posted = trim($news['posted']);
    $posted = trim($posted, 0);
    echo "$posted";
}


Время выводиться в формате 0000-00-00, а мненужно чтобы писало например: 21 Февраля 2009
__
Поможет кто в решении моей проблеммы?
PM MAIL   Вверх
AtomoS
  Дата 19.10.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Народ помогите решить проблемму... :(
PM MAIL   Вверх
bars80080
Дата 19.10.2009, 10:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



попробуй пропусти полученную дату через 
Код

date('j F Y', strtotime($posted));

PM MAIL WWW   Вверх
AtomoS
Дата 19.10.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Цитата(bars80080 @ 19.10.2009,  10:54)
попробуй пропусти полученную дату через 
Код

date('j F Y', strtotime($posted));

Спасибо, Это то что нужно, но дата прописалась по английски, существует ли способ перевести на русский?
__
и ещё, почему-то твой метод представил дату 2009-10-28 (или любую другую дату) как 1 January 1970.. что делать?

Это сообщение отредактировал(а) AtomoS - 19.10.2009, 12:20
PM MAIL   Вверх
bars80080
Дата 19.10.2009, 13:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(AtomoS @  19.10.2009,  12:15 Найти цитируемый пост)
и ещё, почему-то твой метод представил дату 2009-10-28 (или любую другую дату) как 1 January 1970.. 

значит не сработало, но как-то не понятно. проверь ещё отдельно, что выводит:

Код

$data = '2009-10-19';
$r = strtotime($data);
var_dump($r);
с разными $data

должно быть чисто таймстамп, что-то вроде 1236547890.


Цитата(AtomoS @  19.10.2009,  12:15 Найти цитируемый пост)
дата прописалась по английски, существует ли способ перевести на русский?

установить локаль системы на русский где-нибудь в начале кода:
Код

setlocale(LC_ALL, 'ru_RU');

PM MAIL WWW   Вверх
AtomoS
Дата 19.10.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



bars80080, с русским языком разобрался в запрос базы добавил 
Код

mysql_query("SET NAMES cp1251");


Дату тоже починил...

теперь вопрос можно ли перевести дату на русский язык  22 October 2009 на  22 Октября 2009 через функцию какую-нибудь?
PM MAIL   Вверх
bars80080
Дата 19.10.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(AtomoS @  19.10.2009,  15:22 Найти цитируемый пост)
теперь вопрос можно ли перевести дату на русский язык  22 October 2009 на  22 Октября 2009 через функцию какую-нибудь? 


Цитата(bars80080 @  19.10.2009,  13:52 Найти цитируемый пост)
установить локаль системы на русский где-нибудь в начале кода:

setlocale(LC_ALL, 'ru_RU');


PM MAIL WWW   Вверх
AtomoS
Дата 19.10.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



bars80080, не помогает почему-то (
PM MAIL   Вверх
bars80080
Дата 19.10.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



точно? а где вставляешь? покаж код
PM MAIL WWW   Вверх
AtomoS
Дата 19.10.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Код
кому надо тот уже посмотрел


Это сообщение отредактировал(а) AtomoS - 19.10.2009, 16:29
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.