Текущее время: Сб, июл 19 2025, 19:51

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Пн, сен 17 2012, 14:44 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Не ставьте вообще пока TIME ZONE.

Code:
Код:
DATA: time_stamp TYPE timestamp.
data: tz  TYPE ttzz-tzone.

tz = ''.

CONVERT DATE sy-datlo TIME sy-timlo
INTO TIME STAMP time_stamp TIME ZONE tz.


Я тут сам немного запутался, ноту одну видел, сейчас ее ищу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Вт, сен 18 2012, 07:41 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 04 2009, 09:05
Сообщения: 41
Пол: Женский
хорошо, спасибо.. сейчас попробую)))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Вт, сен 18 2012, 07:50 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 04 2009, 09:05
Сообщения: 41
Пол: Женский
удивительно.. с пустым значением делает тоже правильно.. как , если бы я ставила туда UTC))))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Чт, сен 20 2012, 11:39 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Попробуйте через CL_ABAP_TSTMP=>SYSTEMTSTMP_SYST2LOC


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Чт, сен 20 2012, 15:24 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 04 2009, 09:05
Сообщения: 41
Пол: Женский
спасибо.. сейчас попробую)))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Пт, сен 21 2012, 09:52 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 04 2009, 09:05
Сообщения: 41
Пол: Женский
увы.. мне этот метод не подходит - он возвращает лок.время и лок. дату в нормальном виде.. а мне нужно наоборот - имея нормальное время и нормальную дату получить time stamp - что я и делаю с помощью команды convert.... только работает она криво.. если в таймзону ставить rus03 - а если оставляешь ее пустой или ставишь utc - тогда верно формирует.......


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Пт, сен 21 2012, 11:15 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
В этом классе есть еще несколько полезных методов, если нормальное время - это время сервера приложений то подойдет метод SYSTEMTSTMP_SYST2UTC
А если нормальное время это локальное время, то подойдет метод SYSTEMTSTMP_LOC2SYST + SYSTEMTSTMP_SYST2UTC.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Вт, сен 25 2012, 14:40 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 04 2009, 09:05
Сообщения: 41
Пол: Женский
хорошо... посмотрю еще эти методы.. но я вроде все методы просмотрела и мне ни один не понравился))) просмотрю еще раз)) спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Вт, сен 25 2012, 15:05 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 04 2009, 09:05
Сообщения: 41
Пол: Женский
SYSTEMTSTMP_LOC2SYST - подаю 29.09.2012 16.02 - результат тот же


SYSTEMTSTMP_SYST2UTC. - подаю 29.09.2012 16.02 , результат штампа 20.120.925.120.200 - т.е все та же разница в 4 часа((((((( а я жду, что получится 20.120.925.160.200


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Ср, сен 26 2012, 05:30 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
А может вы просто неправильно интерпретируете то что получаете? Логика, как я себе представляю такая:
В абапе все поля таймштампа интерпретируются как время в часовом поясе UTC. Соответственно когда вы преобразовываете системную дату и время в таймштамп время у вас смещается на 4 часа, т.к. сейчас московское время отличается от времени UTC на 4 часа. Затем, если из тайм штампа преобразовывать время в системное оно сдвинется на 4 часа в обратную сторону. Если же из таймштампа преобразовать время в локальное, то будет время, соответствующее часовому поясу пользователя (которое указано на вкладке "ПостЗначения" у пользователя).

В этом случае:
Code:
DATA: time_stamp TYPE timestamp.
data: tz  TYPE ttzz-tzone.

tz = ''.

CONVERT DATE sy-datlo TIME sy-timlo
INTO TIME STAMP time_stamp TIME ZONE tz.

Таймштам соответствует переданному времени потому что не указан часовой пояс и переданная дата и время интерпретируются как дата и время в часовом поясе UTC.

Конструкция
Code:
get timestamp field lv_timestamp.

Также возвратит время в часовом поясе UTC.

Попробуйте проверить как у пользователей с разными значениями часового пояса выполнится такой вариант:
Code:
data: syst_date type d,
      syst_time type t,
      local_date type d,
      local_time type t,
      lv_timestamp type timestamp.

get time stamp field lv_timestamp.

cl_abap_tstmp=>systemtstmp_utc2syst( exporting utc_tstmp = lv_timestamp importing syst_date = syst_date syst_time = syst_time ).
cl_abap_tstmp=>systemtstmp_syst2loc( exporting syst_date = syst_date syst_time = syst_time importing loc_date = local_date loc_time = local_time ).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Ср, сен 26 2012, 07:48 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 04 2009, 09:05
Сообщения: 41
Пол: Женский
понятно.. спасибо большое..... с пустым значением зоны я и оставила тогда, когда не добилась желаемого по мои понятиям результата....я действительно не понимала после прочтения инструкций по оператору convert таких тонкостей... сап всегда поражает своими секретами)))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Сб, дек 15 2012, 16:45 
Ассистент
Ассистент

Зарегистрирован:
Ср, июн 17 2009, 08:33
Сообщения: 39
Коллеги, подниму этот вопрос еще раз.

Почему когда я указываю таймзону UTC+5, время в timestamp уменьшается?
Я то то не так понимаю в этом?

Проверял на программе DEMO_CONVERT_TIME_STAMP, увеличивать timestamp начинает только если ставлю UTC-5


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Вс, дек 16 2012, 10:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
NoNameD написал(а):
Почему когда я указываю таймзону UTC+5, время в timestamp уменьшается?
Я то то не так понимаю в этом?

Почитайте внимательно ответ AFH. Потом посмотрите настройки часового пояса в транзакции SU3.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Пн, дек 17 2012, 07:27 
Ассистент
Ассистент

Зарегистрирован:
Ср, июн 17 2009, 08:33
Сообщения: 39
Удав написал(а):
Почитайте внимательно ответ AFH. Потом посмотрите настройки часового пояса в транзакции SU3.

Вроде бы все уже почитал, посмотрел. Системный часовой пояс стоит UTC+4, Личный часовой пояс пуст.
Все равно мне кажется странной ситуация:
Code:
DATA: l_date TYPE d,
          l_time TYPE t,
          l_ts     TYPE timestamp,
          l_tz     TYPE ttzz-tzone.

l_tz = 'UTC'.
"при L_DATE = 20121217 (sy-datum) и L_TIME = 080256 (sy-uzeit)
CONVERT DATE l_date TIME l_time
    INTO TIME STAMP l_ts TIME ZONE l_tz.

дает результат - 20121217080256. Скажем так - возражений нет.
Но:
Code:
l_tz = 'UTC+12'. (самый дальний пояс России)
"при L_DATE = 20121217 (sy-datum) и L_TIME = 081607 (sy-uzeit)
CONVERT DATE l_date TIME l_time
    INTO TIME STAMP l_ts TIME ZONE l_tz.

Результат такой - 201216201607! То есть время отнялось, а не прибавилось! даже дата стала 16-тое число.

Отсюда вопрос - как узнать дату и время в часовом поясе UTC+12?

Цель - отобразить дату и время создания произвольного документа, согласно часового пояса пользователя, а не системное время/дата.

Например: Документ создан 14.12.12 в 23:00 по МСК.
Пользователь в ХМАО должен видеть на экране 15.12.12 01:00, в ИРК 15.12.12 04:00.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: определение текущей даты в abape
СообщениеДобавлено: Пн, дек 17 2012, 09:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Тут важно знать следующее: CONVERT ... TO TIMESTAMP преобразует дату и время указанного пояса к формату UTC, т.е. в TIMESTAMP данные даты и времени приведены к Гринвичу.
Для их отображения необходимо выполнить обратное преобразование в нужный часовой пояс.
Code:
REPORT  z_timestamp_convert.

PARAMETERS: p_tmzone TYPE ttzcu-tzonesys.

END-OF-SELECTION.

  PERFORM convert_timezone USING: sy-zonlo, p_tmzone.
*&---------------------------------------------------------------------*
*&      Form  convert_timezone
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(P_TMZONE)  text
*----------------------------------------------------------------------*
FORM convert_timezone USING value(p_tmzone) TYPE ttzcu-tzonesys.
  DATA: lv_timestamp TYPE timestamp,
        lv_date TYPE sy-datum,
        lv_time TYPE sy-uzeit.

  CONVERT DATE sy-datum TIME sy-uzeit INTO TIME STAMP lv_timestamp TIME ZONE p_tmzone.
  CONVERT TIME STAMP lv_timestamp TIME ZONE p_tmzone INTO DATE lv_date TIME lv_time.
  WRITE: / lv_timestamp, lv_date, lv_time.
ENDFORM.                    "convert_timezone

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB