| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
serglif 06.06.2005 09:44
Кусок вот отсюда# Разбираем строку регулярным выражением, если не разбирается - ошибка по формату
$tmp[^string_date.match[^^\s*(?:(\d{4,5})(?:\s*^$|(?:-(\d{1,2})(?:\s*^$|(?:-(\d{1,2}))))))?(?:\s*^$|(?:\s+|^^)(?:(\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:\.(\d{1,3}))?)?)?\s*^$))][']]
^if(!def $tmp.match){^throw[cdate:create;invalid_date_format;'$string_date' is not valid date]}
# Раскидываем по переменным
$year(^tmp.1.int($nowdate.year))
$month(^if(def $tmp.2){^tmp.2.int(1)}{^if(def $tmp.1){1}{$nowdate.month}})
$day(^if(def $tmp.2){^tmp.3.int(1)}{^if(def $tmp.1){1}{$nowdate.day}})
$hour(^tmp.4.int(0))
$minute(^tmp.5.int(0))
$second(^tmp.6.int(0))
$ms(^tmp.7.int(0))разбирает все варианты, которые разбирает Parser-овский ^date::create[].