On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 253
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 16.03.21 21:55. Заголовок: Облачные сервисы (WebDAV, CalDAV &Co)


После некоторого разбирательства с прогой удалось организовать импорт из ICAL-файлов и экспорт в оные. Но тут шеф захотел, чтобы был прямой контакт с CalDav через интернет. Я знаю, что на питоне такое возможно. На дельфине и даже Xojo (RealBasic) тоже - через спецбиблиотеку. Но как реализовать подключение к облачному сервису в Harbour/Minigui?

Возможно ли это вообще?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 174 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]


постоянный участник




Пост N: 306
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 10.05.21 07:35. Заголовок: Петр пишет: #inclu..


Петр пишет:

 цитата:
#include "ics.ch"


Я имел в виду файл заголовка ics.ch. В директории заголовочных файлов у меня его нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1682
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.05.21 08:19. Заголовок: Dr. Oldwarez пишет: ..


Dr. Oldwarez пишет:

 цитата:
Я имел в виду файл заголовка ics.ch.


Пост №1671

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 307
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 10.05.21 19:51. Заголовок: Петр пишет: У вас s..


Петр пишет:

 цитата:
У вас sf_getevent для использования с IcsToArray
Для IcsToArray2 sf_GetEvent() код нужно модифицировать

Читайте внимательно
Код в посте №1669 исправил для использования IcsToArray2



Спасибо! Всё исправил. И уже начало импортировать. Теперь только проблема отфильтровывания дубликатов.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 308
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 16.07.21 20:52. Заголовок: Часовые пояса и зимнее/летнее время


И снова здравствуйте.
Всё уже вроде работает, но проблема теперь с часовыми поясами. При импорте из онлайн-календаря в локальную базу данных получается так, что все даты сходят на время по Гринвичу. А у заказчика UTC+1 зимой и UTC+2 летом. Как сделать, чтобы при импорте правильно подхватывало зимнее/летнее время? Какая есть функция для определения время летнее или зимнее? По ключу TZID и потом ниже выходит какая-то дикая абракадабра.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3788
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.07.21 21:10. Заголовок: Dr. Oldwarez пишет К..


Dr. Oldwarez пишет
 цитата:
Какая есть функция для определения время летнее или зимнее?


Использую такие ф-ии Скрытый текст

Использование
 
oCol := :GetColumn("R_DTM") ; oCol:nAlign := DT_CENTER
oCol:cPicture := "@R 9999-99-99 99:99:99"
oCol:nWidth := oCol:ToWidth(subs(oCol:cPicture, 2))
oCol:bDecode := {|cd| Gmt2Utc(cd, .F.) }

oCol:cHeading := StrTran(ot:cDtms, "\", CRLF)
...
по кнопке OK! для GETBOX-ов периода даты и периода времени
:Event(10, {|ow,ky,cn|
LOCAL o := Sys.Cargo, ot := Sys.Cargo:oBaseText
LOCAL oObj := ow:Cargo:oObject, aTmp, cTmp, cDt1, cDt2, cFil, cObj
LOCAL aObj := {}, cGm1
LOCAL aNam := {}, cGm2
LOCAL cNam := This.Events.Value
LOCAL dDt1 := This.PeriodFrom.Value
LOCAL dDt2 := This.PeriodTo.Value
LOCAL cTm1 := This.TimesFrom.Value
LOCAL cTm2 := This.TimesTo.Value
...
cTm1 := left(trim(cTm1)+repl("0", 6), 6)
cTm2 := left(trim(cTm2)+repl("0", 6), 6)
cDt1 := hb_DtoC(dDt1, "YYYYMMDD")+cTm1
cDt2 := hb_DtoC(dDt2, "YYYYMMDD")+cTm2
cGm1 := Gmt2Utc(cDt1, .F., .F.)
cGm2 := Gmt2Utc(cDt2, .F., .F.)
...


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 309
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 17.07.21 09:30. Заголовок: SergKis пишет: *---..


SergKis пишет:

 цитата:
*----------------------------------------------------------------------------*
FUNCTION nUx2cDts( nUx, lDts ) // nUx := 1508186400
*----------------------------------------------------------------------------*
LOCAL dDate, cDate, cTime
DEFAULT lDts := .F.

tDate := hb_datetime( 1970, 1, 1 ) + nUx / 86400

IF lDts ; RETURN tDate
ENDIF

cDate := DtoS( hb_TtoD( tDate ) )
cTime := hb_TtoC( tDate )
cTime := Subs( cTime, At(" ", cTime) + 1 )
cTime := StrTran( cTime, ":", "" )
cTime := StrTran( cTime, ".", "" )

RETURN ( cDate + cTime )



lDts - Date Shift, я так понимаю. nUx - это какое-то астрономическое число, но что оно означает?

Тут идёт приплюсовка часа к времени, но как определить точно, это зимнее (от последнего воскресенья октября до последнего воскресенья марта) или летнее время?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3789
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.07.21 12:42. Заголовок: Dr. Oldwarez пишет n..


Dr. Oldwarez пишет
 цитата:
nUx - это какое-то астрономическое число, но что оно означает?


см. http://clipper.borda.ru/?1-3-0-00000631-000-0-0-1618297675
возможно эта ф-я не нужна.

 цитата:
но как определить точно, это зимнее (от последнего воскресенья октября до последнего воскресенья марта) или летнее время?


ф-я Gmt2Utc(...) определяет разницу gmt и местного времени. Определяйте сами запуская Gmt2Utc(NIL) хоть каждый час разницу зимнего или летнего времени. В показанном варианте ф-ии дата timestamp (gmt) строковая без разделителей, т.к. именно такая хранится в базе dbf для упрощения работы с индексами (данные получены из FireBird ф-ей nUx2cDts( nUx )). За месяц ~2 500 000 записей, базы годовые.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 311
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 26.07.21 12:24. Заголовок: SergKis пишет: *--..


SergKis пишет:

 цитата:
*----------------------------------------------------------------------------*
FUNCTION Gmt2Utc( cDate, lTrans, nHour )
*----------------------------------------------------------------------------*


Итак, попытаюсь расшифровать:
cDate - входная дата и время по Гринвичу
lTrans - указание формата вывода ГГГГ-ММ-ДД ЧЧ:ММ:СС 2021-07-26 12:30:00

Что здесь делает статический s_nhour? А параметр nHour - это заданный сдвиг относительно Гринвича?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3800
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.07.21 12:56. Заголовок: hb_TSToUTC( ) e..


hb_TSToUTC( [<tLocalTime>] ) ➜ tUtcTime -> converts a local time tTIMESTAMP to UTC time.
hb_DateTime() -> local time tTIMESTAMP

cDate - Utc время из базы тип char, значение без миллисекунд, т.е. '20201203102045'
s_nHour - разница в часах локального времени и Utc времени, т.е. для нас: 3 - часа для летнего, 2 - для зимнего времени
вычисляем при входе в программу и можно переустановить s_nHour в каком то режиме (по таймеру, каждый час)
используется дальше как константа для отображения данных базы в локальном времени (в TsBrowse) и
после GETBOX запросов периода дат, времени (локальное время задается), приводим ко времени Utc для
работы с базой (SET SCOPE ..., SET FILTER ... и т.д.)
lTrans используется для TsBrowse отображения в колонках или Label, если не задаем Picture
Пример Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 312
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 26.07.21 14:04. Заголовок: SergKis пишет: s_nH..


SergKis пишет:

 цитата:
s_nHour - разница в часах локального времени и Utc времени, т.е. для нас: 3 - часа для летнего, 2 - для зимнего времени
вычисляем при входе в программу


А как именно его вычисляют? Или всё же прописывают в файле INI?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3801
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.07.21 15:26. Заголовок: Dr. Oldwarez пишет к..


Dr. Oldwarez пишет
 цитата:
как именно его вычисляют?


В тексте ф-ии
 
IF s_nHour == Nil .or. lDate
cTm1 := cTm2 := ""
tDtm := hb_DateTime()
tUtc := hb_TSToUTC( tDtm )
HB_TTOD( tDtm, @cTm1, "hh:mm:ss" )
HB_TTOD( tUtc, @cTm2, "hh:mm:ss" )
s_nHour := Val(cTm1) - Val(cTm2)
ENDIF


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 313
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 20.10.21 13:26. Заголовок: Итак, у меня всё, вр..


Итак, у меня всё, вроде работает, но вот у шефа с той же прогой файл listall_ics.xml, который должен использоваться для считывания данных из онлайн-календаря выдаёт такую вот хрень. Я так понимаю, это шеф неправильно ввёл свои имя пользователя и пароль.
<?xml version="1.0" encoding="utf-8"?> 
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\NotAuthenticated</s:exception>
<s:message>Username or password does not match</s:message>
<s:sabredav-version>1.8.12</s:sabredav-version>
</d:error>


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1729
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 20.10.21 19:46. Заголовок: Dr. Oldwarez пишет: ..


Dr. Oldwarez пишет:

 цитата:
Я так понимаю, это шеф неправильно ввёл свои имя пользователя и пароль.


Да

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 314
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 14.12.21 18:08. Заголовок: И снова здравствуйте..


И снова здравствуйте!

Там у шефа был пароль с запретным символом, попросил заменить, потом в условии фильтра немного порылся. Вроде, работает, но только на стационарных компах. Если событие онлайн-календаря вводят с телефона - жутко коверкает даты и время, кроме конечной даты. Стартовая дата всегда - 27 октября 1996 год. Время коверкает в обеих случаях. В чём разница между событием, введённым с компа и таковым с мобилки?

 
IF aCalStr[nBuf]="DTSTART"
cDateTime:=SUBSTR(aCalStr[nBuf],AT(":",aCalStr[nBuf])+1)
dStartDate:=STOD(LEFT(cDateTime,8))
cStartTime:=STRZERO(VAL(SUBSTR(cDateTime,10,2))+nTimeZone,2)+":"+SUBSTR(cDateTime,12,2)


Тут, как видите, в качестве разделителя используется двоеточие. Возможно, в мобильниках какой-то другой символ, но как это влияет на календарь?

Upd: с мобильника то же двоеточие, но даты искажаются до 1916, 1917 года.
Upd2: в случае, если событие создано на андроидном мобильнике, но потом изменено и сохранено на компьютере - всё в порядке. Дата передаётся правильно, даже если меняют только текст.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 174 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 33
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет