Возможно можно проще, но я решил перевести твою дату в юникс, и по разнице секунд определить количество дней.
Формулу нигде не искал, не копировал, написал сам, такчто возможно с чемто и ошибся. Знающие поправят.
IF(int(($_date_y-1968)/4) = ($_date_y-1968)/4) //определяем, високосный ли год
STRSEPARATE ("31,29,31,30,31,30,31,31,30,31,30,31", ",", $month) //массив с месяцами
ELSE
STRSEPARATE ("31,28,31,30,31,30,31,31,30,31,30,31", ",", $month)
END_IF
FOR($a=0,$a<$_date_m-1) // определяем количество дней до начала месяца
$all_md = $month[$a] + $all_md
END_CYC
$unix =(($_date_y-1970)*365+int(($_date_y-1969)/4))*86400 + $all_md*86400 + ($_date_d-1)*86400 + $_time_h*3600 + $_time_m*60 + $_time_s
print("рассчитанное время юникс - ",$unix) //пока писал, на данный момент все верно.
print("реальное время юникс - ",$_time_t)
halt
Вариант для твоей задачи:
$date = "19/авг/19 15:54" //написал простой вариант, где к однозначным числам приклеивается 0 , к примеру 19/авг/01 04:09
$date_y = int(STRCUT ($date, 8, 2)) + 2000
$date_m = STRCUT ($date, 4, 3)
STRSEPARATE ("янв,фев,мар,апр,май,июн,июл,авг,сен,окт,ноя,дек", ",", $mon)
FOR($a=0,$a<12)
IF($mon[$a] = $date_m)
$date_m = $a+1
$a=12
END_IF
END_CYC
$date_d = int(STRCUT ($date, 1, 2))
$time_h = int(STRCUT ($date, 11, 2))
$time_m = int(STRCUT ($date, 14, 2))
//print($date_y, " ", $date_m, " ", $date_d, " ", $time_h, " ", $time_m)
//////////////////////////////////////
IF(int(($date_y-1968)/4) = ($date_y-1968)/4)
STRSEPARATE ("31,29,31,30,31,30,31,31,30,31,30,31", ",", $month)
ELSE
STRSEPARATE ("31,28,31,30,31,30,31,31,30,31,30,31", ",", $month)
END_IF
FOR($a=0,$a<$date_m-1)
$all_md = $month[$a] + $all_md
END_CYC
$unix =(($date_y-1970)*365+int(($date_y-1969)/4))*86400 + $all_md*86400 + ($date_d-1)*86400 + $time_h*3600 + $time_m*60
//print("рассчитанное время в юникс - ", $unix)
$days = int(($_time_t - $unix)/86400)
print("Прошло ", $days, " дней") //Прошло 73 дней
halt