parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Более общий вариант

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[].