|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
ValeriuDAiMor, А системная функция может нам указать сколько дней имеется в конкретном выбранном месяце ? Спасибо. Проще всего взять первый день следующего месяца и вычесть 1: s date=$zd($h,3) s year=$p(date,"-"),month=$p(date,"-",2)+1 s:month=13 month=1,year=year+1 s lastDay=$p($zd($zdh(year_"-"_month_"-01",3)-1,3),"-",3) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2014, 08:26 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
MaWr, Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2014, 18:01 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Не могу понять как форматируется дата... Код: plaintext 1.
Я хочу получить 06/08/1987, т.е. полный год Что не правильно ? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 11:12 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Valeriu , как вариант... w $tr("Dd.Mm.VvYy","VvYy-Mm-Dd",$ZD(53543,3)) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 11:23 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
DAiMor,krvsa, Спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 11:25 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Еще вопросик. А можно дату форматировать так: 06.08.1987 без функции $translate ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 11:28 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
ValeriuЕще вопросик. А можно дату форматировать так: 06.08.1987 без функции $translate ? Вот там же в документации пример , с изменением DateSeparator ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 11:32 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Спасибо всем, вроде как бы картинка вырисовывается ... YarMonDay(startdate) ; "DD/MM/YEAR"=4,,4 - format delimiter standart ; $$SetDCFormat^%NLS("DateSeparator",".") change delimiter s startdate=$$horolog(startdate) s separator=$$SetDCFormat^%NLS("DateSeparator",".") n days,len,months,start,today,years s start=$ZDate(startdate,4,,4) s today=$ZDate($h,4) w !,"Startdate is "_start_", today is "_today_";" s years=$p(today,".",3)-$p(start,".",3) s months=$p(today,".",2)-$p(start,".",2) s days=$p(today,".",1)-$p(start,".",1) s len="31 28 31 30 31 30 31 31 30 31 30 31" d:$p(today,".",2)=2 . n thisyear . s thisyear=$p(today,".",3) . s:'(thisyear#4) $p(len,".",2)=29 . s:'(thisyear#100) $p(len,".",2)=28 . s:'(thisyear#400) $p(len,".",2)=29 . q s:days<0 days=$p(len,".",2)+days,months=months-1 s:months<0 months=12+months,years=years-1 w !,"delta is "_days_" days, "_months_" months and "_years_" years.",! q ; horolog(data) s day=$p(data,".",1) s year=$p(data,".",3) s year=year<100*1900+year s mon=$p(data,".",2)-1 f j=1841:1:year-1 s day=day+365+'(j#4)-'(j#100)+'(j#400) f j=31,28,31,30,31,30,31,31,30,31,30 q:'mon s mon=mon-1,day=day+j s:$p(data,".",2)>2 horolog=day+'(year#4)-'(year#100)+'(year#400) q horolog ; DayMon() s date=$zd($h,3) s year=$p(date,"-"),month=$p(date,"-",2)+1 s:month=13 month=1,year=year+1 s lastDay=$p($zd($zdh(year_"-"_month_"-01",3)-1,3),"-",3) q lastDay ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 12:17 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Valeriu s len="31 28 31 30 31 30 31 31 30 31 30 31" Почему идея с отниманием дня от первого дня следующего месяца непонравилась? По-мне так подход явно лучше... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 13:39 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
krvsa, А я это использую, последняя функция - DayMon() К стати, не исправил ошибочку в коде s len="31.28.31.30.31.30.31.31.30.31.30.31" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 14:48 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Еще, там используется функция $zdh, которая в GT.M нету. Придется переделать как то. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2014, 14:54 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
ValeriuЕще, там используется функция $zdh, которая в GT.M нету. Придется переделать как то. В GT.M есть утилита для этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 09:13 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
MaWrВ GT.M есть утилита для этого. Вот аналогичная фигня была и в МСМ от Майкронетикс... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 15:48 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
MaWr, Я знаю, но, хотелось соблюдать "стандарт". Код без изменений - что там в GT.M ,что здесь в Cache' ! У меня все приложения используют один протокол и не хотелось менять абсолютно ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 19:31 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Valeriu s len="31 28 31 30 31 30 31 31 30 31 30 31" 29 .02.2016 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2014, 15:56 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Високосный, Окончательно с исправлениями:Days(startdate,finisdate,years,months,days) ; "DD/MM/YEAR"=4,,4 - format delimiter standart ; $$SetDCFormat^%NLS("DateSeparator",".") change delimiter s startdate=$$horcache(startdate) s finisdate=$$horcache(finisdate) d SetDCFormat^%NLS("DateSeparator",".") s (days,len,months,start,today,years)="" s start=$ZDate(startdate,4,,4) s today=$ZDate(finisdate,4,,4) s luna=+$p(today,".",2) ; zile in luna s years=$p(today,".",3)-$p(start,".",3) s months=$p(today,".",2)-$p(start,".",2) s days=$p(today,".",1)-$p(start,".",1) s len="31.28.31.30.31.30.31.31.30.31.30.31" d:+$p(today,".",2)=2 . n thisyear . s thisyear=$p(today,".",3) . s:'(thisyear#4) $p(len,".",2)=29 . s:'(thisyear#100) $p(len,".",2)=28 . s:'(thisyear#400) $p(len,".",2)=29 . q s:days<0 days=$p(len,".",luna)+days,months=months-1 s:months<0 months=12+months,years=years-1 q ; YarMonDay(startdate,finisdate,years,months,days) ; "DD/MM/YEAR"=4,,4 - format delimiter standart ; $$SetDCFormat^%NLS("DateSeparator",".") change delimiter s startdate=$$horcache(startdate) s finisdate=$$horcache(finisdate) d SetDCFormat^%NLS("DateSeparator",".") s (days,len,months,start,today,years)="" s start=$ZDate(startdate,4,,4) s today=$ZDate(finisdate,4,,4) s luna=+$p(today,".",2) ; zile in luna s years=$p(today,".",3)-$p(start,".",3) s months=$p(today,".",2)-$p(start,".",2) s days=$p(today,".",1)-$p(start,".",1) s len="31.28.31.30.31.30.31.31.30.31.30.31" d:+$p(today,".",2)=2 . n thisyear . s thisyear=$p(today,".",3) . s:'(thisyear#4) $p(len,".",2)=29 . s:'(thisyear#100) $p(len,".",2)=28 . s:'(thisyear#400) $p(len,".",2)=29 . q s:days<0 days=$p(len,".",luna)+days,months=months-1 s:months<0 months=12+months,years=years-1 q ; MontDays(date) s month=+$p(date,".",2) s len="31.28.31.30.31.30.31.31.30.31.30.31" s montdays=$p(len,".",month) d:+$p(date,".",2)=2 . n thisyear . s thisyear=$p(date,".",3) . s:'(thisyear#4) $p(len,".",2)=29 . s:'(thisyear#100) $p(len,".",2)=28 . s:'(thisyear#400) $p(len,".",2)=29 . s montdays=$p(len,".",2) q montdays ; horcache(date) s hor="" s separator=$$SetDCFormat^%NLS("DateSeparator",".") s hor=$ZDATEH(date,4,,4) q hor ; horuser(date) s day=$p(date,".",1) s year=$p(date,".",3) s year=year<100*1900+year s mon=$p(date,".",2)-1 f j=1841:1:year-1 s day=day+365+'(j#4)-'(j#100)+'(j#400) f j=31,28,31,30,31,30,31,31,30,31,30 q:'mon s mon=mon-1,day=day+j s:$p(date,".",2)>2 hor=day+'(year#4)-'(year#100)+'(year#400) q hor ; horgtm(date) ;n cc,dat,dd,mm,yy,dh,zd s (cc,dat,dd,mm,yy,dh,zd)="" s mm=+date,dd=$p(date,".",1),yy=$p(date,".",3),dat="" i mm<1 q "" i mm>13 q "" i dd<1 q "" i dd>$s(+mm'=2:$e(303232332323,mm)+28,yy#4:28,yy#100:29,yy#400:28,1:29) q "" s dat=yy-1841,mm=mm-1,cc=1 i dat<0 s dd=dd-1,cc=-1 s dat=dat\4*1461+(dat#4-$s(dat'<0:0,1:4)*365)+(mm*30)+$e(10112234455,mm)+dd-(yy-1800\100-(yy-1600\400)) i yy#4,mm>1 s dat=dat-cc i yy#100=0,mm<2,yy#400 s dat=dat+cc q dat ; ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 17:24 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Еще. Как оформлять текст рутины ? Вроде как бы не нахожу где правильная подсветка синтаксиса для COS. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 17:28 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
ValeriuЕще. Как оформлять текст рутины ? Вроде как бы не нахожу где правильная подсветка синтаксиса для COS.Здесь нет и скорее всего не будет подсветки для COS. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 17:29 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
DAiMor, Я так и понял... А как вы это делаете ? Вроде вижу, что исправляете ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 17:31 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
ValeriuDAiMor, Я так и понял... А как вы это делаете ? Вроде вижу, что исправляете ?это servit так делает, у него есть раскраска для кода, но он сейчас в отпуске. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 18:20 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
Valeriu, Можно использовать подсветку синтаксиса из гитхаба intersystems-ru. https://github.com/intersystems-ru/cache-objectscript-syntax-colorer ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2014, 19:04 |
|
Вычисление разницы между датами
|
|||
---|---|---|---|
#18+
ValeriuЕще. Как оформлять текст рутины ? Вроде как бы не нахожу где правильная подсветка синтаксиса для COS. 16204606 ValeriuЯ так и понял... А как вы это делаете ? Вроде вижу, что исправляете ? 14068076 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2014, 18:04 |
|
|
start [/forum/topic.php?fid=39&msg=38740885&tid=1556812]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 452ms |
0 / 0 |