data: lo_date type ref to zcl_date.
lo_date = zcl_date=>create( '20200101' ). " 1 января 2020
" or
lo_date = zcl_date=>create( ). " текущая дата
" or
lo_date = zcl_date=>create(
iv_date = '20200101'
iv_language = 'E'
). " инициализация с кастомным языком (default = sy-langu)
- get
- get_day -- получить номер дня в месяце (num2)
- get_month_number -- получить номер месяца (num2)
- get_year -- получить год (num4)
- get_language -- получить текущий язык (lang)
- get_date -- получить дату (dats)
- get_month_name -- получить название месяца на текущем языке (fcltx)
- get_short_month_name -- получить краткое название месяца на текущем языке (янв, фев...) (fcktx)
- set
- set_date -- установить дату (dats)
- set_day -- установить день (num2)
- set_year -- установить год (num4)
- set_month_number -- установить месяц (num2)
- set_language -- установить язык (lang)
data: lo_date type ref to zcl_date,
lv_dats type dats,
lv_month type string.
lo_date = zcl_date=>create( ).
lo_date->set_year( 2001 ).
lo_date->set_month_number( 9 ).
lo_date->set_day( 11 ).
lv_dats = lo_date->get_date( ).
lv_month = lo_date->get_month_name( ).
write lv_dats. " 11 сентября 2001
write lv_month. " Сентябрь
- get_short_month_name_by_number
- get_month_name_by_number
(Получить имя месяца/короткое имя месяца по его номеру)
data: lv_month type string,
lv_short type string.
" Эти методы никак не взаимодействуют с датой, которая хранится внутри объекта.
" Лишь возвращают названия месяцев, переданных в аргументах
lv_short = lo_date->get_short_month_name_by_number( 1 ).
lv_month = lo_date->get_month_name_by_number( 1 ).
write lv_short. " Янв
write lv_month. " Январь
" Аналогично, с другими языками
lo_date->set_language( 'E' ).
lv_short = lo_date->get_short_month_name_by_number( 1 ).
lv_month = lo_date->get_month_name_by_number( 1 ).
write lv_short. " Jan
write lv_month. " January
- minus
- plus
(Добавить/убавить день/месяц/год)
lo_date = zcl_date=>create( '20200101' ). " 01.01.2020
lo_date->minus( iv_years = 2 ). " 01.01.2018
lo_date->plus( iv_days = 3 ). "04.01.2018
lo_date->plus( iv_months = 1 ). "04.02.2018
" Несколько аргументов
lo_date->plus(
iv_days = 1
iv_years = 2
). " 05.02.2020
- to_string *(Конвертировать дату в человеко-читаемую строку)
По умолчанию: в формате 01 Января 2020 ($dd $m $yyyy)*
Принимает один (опциональный) аргумент -- маску вывода Доступные ключевые слова в маске:
- $yyyy -- длинное представление года (2019)
- $yy -- короткое представление года (19)
- $m -- название месяца на текущем языке (Январь)
- $mmm -- короткое название месяца на текущем языке (Янв)
- $mm -- номер месяца (01)
- $dd -- день
data: lo_date type ref to zcl_date,
lv_formated type string.
lo_date = zcl_date=>create( '20200101' ). " 01.01.2020
lv_formated = lo_date->to_string( 'Месяц: $m Год: $yyyy День: $dd' ).
write lv_formated. " Месяц: Январь Год: 2020 День: 01
- obj_diff
- diff
Возвращает разницу в днях между двумя объектами dats(diff) / zcl_date (obj_diff)
data: lo_date1 type ref to zcl_date,
lo_date2 type ref to zcl_date,
lv_dats1 type dats,
lv_dats2 type dats,
lv_diff_dats type i,
lv_diff_zcl_d type i.
lv_dats1 = '20200120'. " 20.01.2020
lv_dats2 = '20200101'. " 01.01.2020
lo_date1 = zcl_date=>create( lv_dats1 ).
lo_date2 = zcl_date=>create( lv_dats2 ).
" Разница в датах между двумя переменными dats
lv_diff_dats = zcl_date=>diff( iv_dats1 = lv_dats1
iv_dats2 = lv_dats2 ).
" Разница в датах между двумя объектами zcl_date
lv_diff_zcl_d = zcl_date=>obj_diff( iv_dat1 = lo_date1
iv_dat2 = lo_date2 ).
write lv_diff_dats. " 19
write lv_diff_zcl_d. " 19