2012-04-12 5 views
3
  1. Я хочу знать, как strtotime (php Date функция) работа?
  2. как Parse string Как "15 Сентябрь 2012" to timeStamp
  3. есть ли лучший алгоритм?

моя цель изменить эту функцию для персидского языкаКак работает алгоритм strtotime (функция PHP Date)?

+0

Вот http://stackoverflow.com/a/1268380 реализация Java, но не знаю, если он берется непосредственно из исходного кода функции StrToTime PHP. – Lobo

+0

tnx i wanna sth нравится –

ответ

7

вы можете просмотреть исходный код PHP (https://github.com/php/php-src) и функцию поиска, чтобы увидеть его применение ентация.

ОБНОВЛЕНИЕ

Вот алгоритм функции StrToTime() https://github.com/php/php-src/blob/master/ext/date/php_date.c#L1324

Привет !.

+6

Вместо ссылки на master (который будет меняться со временем и разорвать вашу ссылку) вместо этого ссылка на тег 5.3.23. Это не изменится. https://github.com/php/php-src/blob/php-5.3.23/ext/date/php_date.c#L1397 –

3

так StrToTime принимает английский вход, я бы рекомендовал принимать персидскую вход: «15 (SOMETHING_PERSIAN) 2012» и заменить необходимую строку (Вам нужны RegExp и переключатель заявление, я думаю) и сделать его «15 (SOMETHING_ENGLISH) 2012», а затем отправить его в StrToTime

+0

проблема в том, что я хочу изменить sth как «فروردین 12 2004» в ex 2004/6/12 –

+0

с помощью RegExp, вы найдете эту строку и замените ее соответствующим английским эквивалентом – Adi

+1

persian язык более сложный .... я предпочитаю переписать эту функцию .... –

3

Я хочу знать, как работает strtotime (функция даты php)?

Go здесь: https://github.com/php/php-src/blob/master/ext/date/lib/parse_date.c

Поиск timelib_strtotime.

+0

Исходный файл имеет длину 25 000 строк, четко сгенерированный инструментом yacc/bison-like , Хотя это может быть адекватно как работающая реализация, это не полезно, поскольку любой вид ресурсов для изучения того, как это делается на самом деле. – markt1964

2

забыть об этом, используя php Intl extension. в будущем будет частью ядра php.

<?php 
    // format 
    $format = datefmt_create('[email protected]=persian', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL, 'yyyy/MM/dd HH:mm'); 

    // time in locale as you wish 
    var_dump(datefmt_format($format, time())); // '۱۳۹۱/۰۲/۰۴ ۱۹:۱۵' 

поддержка проекта ICU, если вы хотите поддерживать персидский язык в i18n для всех языков.

php intl extension

icu-project.org

Смежные вопросы