У меня есть код Java, который запрашивает записи календаря с сервера Lotus Notes Domino (на основе диапазона дат начала и окончания).Ниже приведена упрощенная версия кода.
При запросе к серверу Domino, который форматирует даты так же, как локальный клиент, все в порядке, например, и сервер, и клиент используют формат m / d / y.Однако, если сервер и клиент используют разные форматы (например, сервер с американским форматированием m / d / y и клиент с немецким форматированием d / m / y), то будет найдено неправильное число записей Lotus Notes.
Это потому, что я конвертирую даты в локальные строки с помощью getLocalTime (), а затем создаю диапазон дат с помощью @TextToTime ().
Есть ли способ узнать, какой формат даты используется серверомиспользует?Или есть способ полностью избежать преобразования даты в строку?Я хотел бы передать два объекта Lotus DateTime и позволить серверу декодировать их по мере необходимости.
import lotus.domino.*;
Session session = NotesFactory.createSession((String)null, (String)null, password);
Database db = session.getDatabase(dominoServer, mailfile, false);
// Get our start and end query dates in Lotus Notes format. We will query
// using the localized format for the dates.
lotus.domino.DateTime minStartDateLN = session.createDateTime(minStartDate);
lotus.domino.DateTime maxEndDateLN = session.createDateTime(maxEndDate);
// Query Lotus Notes to get calendar entries in our date range.
// Here is an overview of this SELECT:
// @IsAvailable(CalendarDateTime) is true if the LN document is a calendar entry
// @Explode splits a string based on the delimiters ",; "
// The operator *= is a permuted equal operator. It compares all entries on
// the left side to all entries on the right side. If there is at least one
// match, then true is returned. Explode is used because the CalendarDateTime
// field can have many dates separated by ";" (e.g. for recurring meetings).
String calendarQuery = "SELECT (@IsAvailable(CalendarDateTime) & (@Explode(CalendarDateTime) *= @Explode(@TextToTime(\""
+ minStartDateLN.getLocalTime()
+ "-" + maxEndDateLN.getLocalTime() + "\"))))";
DocumentCollection queryResults = db.search(calendarQuery);