Автор | Сообщение |
|
| |
Пост N: 5092
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 11:10. Заголовок: DOW() и компания
Нет ли какой переключалки в Harbour что бы функции из разряда дней недели Dow() , Cdow() , NtocDow() работали по европейскому стандарту в котором первый день недели понедельник а не в американском где первый день недели воскресение. Понятно что можно свои переходники спаять. PS В пиндостане все ни как у людей
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1088
Зарегистрирован: 27.01.07
|
|
Отправлено: 09.07.15 11:24. Заголовок: Дима, так в письменн..
Дима, так в письменном виде все ж правильно возвращается. Ну и плевать, что четверг - это 5-й день )) Или есть более глубокие причины?
|
|
|
|
| |
Пост N: 5093
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 11:26. Заголовок: NtocDow(1) чего верн..
NtocDow(1) чего вернет ? Прально воскресение а надо понедельник Ну или dwmas:={0,0,0,0,0,0,0} // дни недели stimer->(dbeval({|| dwmas[rusdow(stimer->data_z)]+=1})) пришлось делать RUSDOW ()
|
|
|
|
| постоянный участник
|
Пост N: 1089
Зарегистрирован: 27.01.07
|
|
Отправлено: 09.07.15 11:34. Заголовок: Ну, что поделать, ка..
Ну, что поделать, как-то так... )) Я просто учитываю, что sunday is number 1 и фсё... )
|
|
|
|
| |
Пост N: 5094
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 11:35. Заголовок: Я думал что коли уст..
Я думал что коли установка формата даты , например SET DATE TO GERMAN то возможно и есть установка стандарта дней недели что ли )))
|
|
|
|
| постоянный участник
|
Пост N: 1090
Зарегистрирован: 27.01.07
|
|
Отправлено: 09.07.15 11:37. Заголовок: Не, такого нет...
Не, такого нет.
|
|
|
|
| |
Пост N: 5099
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 21:29. Заголовок: Собственно делал в &..
Собственно делал в "лоб". func _dow(c) local n:=dow(c) return if(n==1,7,n-1) А после возник спортивный интерес а нельзя ли сделать короче через % , но что то не срастается и видимо я уже туплю ))) Есть идеи ?
|
|
|
|
| |
Пост N: 142
Зарегистрирован: 21.04.13
|
|
Отправлено: 09.07.15 21:44. Заголовок: короче..
func _dow(c) local n:=IIF(valtype(c)="D",dow(c-1) ,0) return n
|
|
|
|
| Администратор
|
Пост N: 3308
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.15 21:47. Заголовок: Совсем просто и без ..
Совсем просто и без костылей будет так: func _dow(dt) return ( dt % 7 ) + 1
|
|
|
|
| |
Пост N: 5100
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 21:50. Заголовок: petr707 Понял , пер..
petr707 Понял , перемудрил я )) Вот так будет короче func _dow(c) return dow(c-1) Проверка не нужна , функцию юзаю только я и туда 100 % попадет только дата. По началу подумал что отталкиваться надо от результата что выдаст DOW() и после этого с ним сделать что нужно.
|
|
|
|
| |
Пост N: 5101
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 21:54. Заголовок: Pasha Паш что то не..
Pasha Паш что то не то ......)) Проверял так for i=0 to 7 ? dow(date()+i), _dow(date()+i) next
|
|
|
|
| Администратор
|
Пост N: 3309
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.15 22:08. Заголовок: дык сегодня вроде че..
дык сегодня вроде четверг (date()%7+1) как раз будет 4. Не ?
|
|
|
|
|
| |
Пост N: 5102
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:12. Заголовок: Pasha for i=0 ..
Pasha for i=0 to 7 ? dow(date()+i), _dow(date()+i) next wait func _dow(dt) return ( dt % 7 ) + 1 При выполнении Argument Error % Base 1085
|
|
|
|
| Администратор
|
Пост N: 3310
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.15 22:13. Заголовок: Еще короче, то есть ..
Еще короче, то есть эффективнее: #pragma BEGINDUMP #include "hbapi.h" HB_FUNC( _DOW ) { hb_retnl( HB_ISDATE(1) ? (hb_pardl(1) % 7) + 1 : 0 ); } #pragma ENDDUMP
|
|
|
|
| |
Пост N: 5103
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:15. Заголовок: Pasha пишет: Еще ко..
Pasha пишет: чудно , ошибка та же
|
|
|
|
| |
Пост N: 5104
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:19. Заголовок: В операции % делимое..
В операции % делимое должно быть числом а у тебя дата
|
|
|
|
| |
Пост N: 603
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.07.15 22:20. Заголовок: Dima пишет: что то ..
|
|
|
|
| |
Пост N: 5105
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:28. Заголовок: Игорь а тест чеканут..
Игорь а тест чекануть ;) FT_DATECNFG( , 6 ) for i=0 to 7 ? dow(date()+i), FT_DAYTOBOW(date()+i) next Результат 5 6 6 0 7 1 1 2 2 3 3 4 4 5 5 6
|
|
|
|
| Администратор
|
Пост N: 3311
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.15 22:30. Заголовок: я прогнал для xHarbo..
я прогнал для xHarbour, там для типа данных D операция % допустима. В Harbour, оказывается, нет. Но вариант на С работает, в С это до лампочки
|
|
|
|
| |
Пост N: 5106
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:35. Заголовок: Pasha пишет: Но вар..
Pasha пишет: цитата: | Но вариант на С работает, в С это до лампочки |
| не работает
|
|
|
|
| |
Пост N: 5107
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:38. Заголовок: Dima пишет: не рабо..
Dima пишет: Сори , убил все OBJ , пересобрал , работает. Глюки Hbmk2 видимо ......... Спасибо !
|
|
|
|
| |
Пост N: 5108
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:39. Заголовок: Pasha Если не сложн..
Pasha Если не сложно и время есть , можешь релизнуть всех братцев DOW() , ты понял о чем я в Cи варианте ?
|
|
|
|
|
| |
Пост N: 604
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.07.15 22:39. Заголовок: Dima пишет: тест че..
Dima пишет: что не так ? ? dow(date()+i), FT_DAYTOBOW(date()+i) + 1 этим FT_DATECNFG( , 6 ) ты установил в что неделя начинается в ПЯТНИЦУ тогда четверг это 7 вот твой тест с +1 5 7 четверг 6 1 пятница 7 2 суббота 1 3 2 4 3 5 4 6 Надо ставить не пятницу конечно
|
|
|
|
| |
Пост N: 5110
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:46. Заголовок: Haz Извини что спат..
Haz Извини что спать не даю ))) Смотри. for i=0 to 7 ? dow(date()+i), _dow(date()+i),FT_DAYTOBOW(date()+i) + 1 next wait #pragma BEGINDUMP #include "hbapi.h" HB_FUNC( _DOW ) { hb_retnl( HB_ISDATE(1) ? (hb_pardl(1) % 7) + 1 : 0 ); } #pragma ENDDUMP Результат 5 4 5 6 5 6 7 6 7 1 7 1 2 1 2 3 2 3 4 3 4 5 4 5
|
|
|
|
| |
Пост N: 5111
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:48. Заголовок: Да виноват надо было..
Да виноват надо было FT_DATECNFG( , 2 ) Буду знать. Но вариант Паши мне больше нравится ! ;)
|
|
|
|
| |
Пост N: 605
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.07.15 22:50. Заголовок: Dima пишет: Смотри...
Dima пишет: так проверь Func Main() local i := 0 local dDate := DATE() FT_DATECNFG( , 2 ) for i := 0 to 6 ? dow(date()+i), FT_DAYTOBOW(date()+i)+1 next RETURN NIL у Паши несравнимо эффективнее в этом случае , но FT_ XXXXX() много еще чего могут , прими в копилку ))
|
|
|
|
| |
Пост N: 5112
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.15 22:57. Заголовок: Haz пишет: прими в ..
Haz пишет: Понял ! Dima пишет: цитата: | Если не сложно и время есть , можешь релизнуть всех братцев DOW() , ты понял о чем я в Cи варианте ? |
| Павел это можно сделать ? Хотя бы CDOW , Ntocdow
|
|
|
|
| Администратор
|
Пост N: 3312
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.07.15 13:25. Заголовок: CDOW переделывать см..
CDOW переделывать смысла нет, т.к. там на вход подается дата, а на выходе - строка Ntocdow - это если на вход дается номер дня недели: #pragma BEGINDUMP #include "hbapi.h" #include "hbapilng.h" HB_FUNC( _DOW ) { hb_retnl( HB_ISDATE(1) ? (hb_pardl(1) % 7) + 1 : 0 ); } HB_FUNC( NTOCDOW ) { int iDow; if( HB_ISNUM(1) ) iDow = hb_parni(1); else iDow = 0; if( iDow >= 1 && iDow <= 7 ) hb_retc_const( hb_langDGetItem( HB_LANG_ITEM_BASE_DAY + ( iDow % 7 ) ) ); else hb_retc(""); } #pragma ENDDUMP А больше там функций вроде бы и нет
|
|
|
|
| |
Пост N: 5113
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.07.15 13:58. Заголовок: Pasha Да с CDOW() я..
Pasha Да с CDOW() я ошибся и ему все равно какой стандарт. 10 июля 2015 что в Африке пятница , что в Америке ......хоть что то общее ;) Спасибо за NTOCDOW , работает
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|