Текущее время: Пт, июл 18 2025, 08:23

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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