Поделиться через


Функции даты времени выполнения X++

Замечание

Группы интересов сообщества теперь переехали из Yammer в Microsoft Viva Engage. Чтобы присоединиться к сообществу Viva Engage и принять участие в последних обсуждениях, заполните форму " Запрос доступа к финансам и операциям Viva Engage Community " и выберите сообщество, к которому вы хотите присоединиться.

В этой статье описываются функции времени выполнения даты.

dayName

Извлекает имя дня недели, указанного числом.

str dayName(int number)

Параметры

Параметр Description
число/номер Количество дня в неделю.

Возвращаемое значение

День недели, указанный параметром number.

Замечания

Допустимые значения для параметра числа — 17. Понедельник представлен 1, вторник к 2, и воскресенье к 7.

Example

static void dayNameExample(Args _arg)
{
    str s = dayName(1);
    print "First day of the week's name is " + s;
    pause;
}

dayOfMth

Вычисляет число дней в месяце для указанной даты.

int dayOfMth(date date)

Параметры

Параметр Description
date Дата, для которой возвращается день месяца.

Возвращаемое значение

Целое число от 1 до 31, указывающее день месяца для указанной даты.

Замечания

dayOfMth(31\12\2001) // returns 31.

Example

static void dayOfMthExample(Args _arg)
{
    date d = today();
    int i = dayOfMth(d);

    print "Today's day of the month is " + int2Str(i);
    pause;
}

dayOfWk

Вычисляет количество дней в неделе для указанной даты. Заметка: Понедельник представлен 1, вторник к 2, и воскресенье к 7.

int dayOfWk(date date)

Параметры

Параметр Description
date Значение даты , указывающее год, месяц и день.

Возвращаемое значение

Число указанного дня в неделю.

Example

static void dayOfWkExample(Args _arg)
{
    date d = today();
    int i = dayOfWk(d);

    print "Today's day of the week is " + int2Str(i);
    pause;
}

dayOfYr

Вычисляет количество дней от 1 января до указанной даты.

int dayOfYr(date _date)

Параметры

Параметр Description
_дата Дата, указывающая год, месяц и день.

Возвращаемое значение

Число дней от 1 января до указанной даты включительно.

Замечания

1 января 1, а 31 декабря — 365 или 366 в зависимости от того, является ли год високосным годом.

Example

static void dayOfYrExample(Args _arg)
{
    date d = today();
    int i = dayOfYr(d);

    print "Today's day of the year is " + int2Str(i);
    pause;
}

endMth

Вычисляет последнюю дату в месяце указанной даты.

date endMth(date date)

Параметры

Параметр Description
date Значение даты , указывающее год, месяц и день.

Возвращаемое значение

Значение даты последнего дня в указанном месяце.

Замечания

endMth(02\2\1988); //Returns the date 29\2\1988 because 1988 is a leap year.
endMth(02\2\1989); //Returns the date 28\2\1989.

mkDate

Создает дату на основе трех целых чисел, указывающих день, месяц и год соответственно.

date mkDate(int day, int month, int year)

Параметры

Параметр Description
day Целое число, представляющее день месяца.
month Целое число, представляющее месяц года.
год Целое число, представляющее год, которое должно быть от 1900 до 2154.

Возвращаемое значение

Значение даты , основанное на значениях параметров дня, месяца и года .

Замечания

Если дата не допустима, этот метод возвращает дату 0 (ноль, 1.1.1.1900).

Example

static void mkDateExample(Args _arg)
{
    date d;
    
    // Returns the date 01\01\2005.
    d = mkDate(1, 1, 2005);
    print d;
    pause;
}

mthName

Извлекает имя указанного месяца

str monthName(int number)

Параметры

Параметр Description
число/номер Число месяца.

Возвращаемое значение

Имя указанного месяца.

Замечания

Допустимые значения параметра number : 112. Январь представлен 1 и 12 декабря.

Example

static void mthNameExample(Args _arg)
{
    // MthName(6) returns the text string "June".
    str s = mthName(6);

    print "Month name is " + s;
    pause;
}

mthOfYr

Извлекает количество месяца в году для указанной даты. Заметка:1 января, февраль — 2, а декабрь — 12.

int mthOfYr(date date)

Параметры

Параметр Description
date Дата, указывающая год, месяц и день.

Возвращаемое значение

Число месяцев в году в течение месяца, представленного параметром даты .

Example

static void mthOfYrExample(Args _arg)
{
    int i = mthOfYr(today());

    print "The number of the month in today's date is " + int2Str(i);
    pause;
}

nextMth

Извлекает дату в следующем месяце, которая соответствует наиболее точно указанной дате.

date nextMth(date date)

Параметры

Параметр Description
date Дата сопоставления в следующем месяце.

Возвращаемое значение

Ближайшее совпадение с указанной датой, найденной в следующем месяце.

Замечания

nextMth(29\2\1996); //returns 29/03/1996.
nextMth(31\1\1996); //returns 2921996, because 1996 is a leap year.

Example

static void nextMthExample(Args _arg)
{
    date d = nextMth(today());

    print "Closest date next month is "
    + date2Str(d, 2, 2, -1, 2, -1, 4);
    pause;
}

nextQtr

Извлекает дату в следующем квартале, которая соответствует наиболее точно указанной дате.

date nextQtr(date date)

Параметры

Параметр Description
date Дата сопоставления в следующем квартале.

Возвращаемое значение

Ближайшее совпадение с указанной датой, найденной в следующем квартале.

Замечания

Например, nextQtr(31\1\1998) возвращает значение 30\4\1998.

Example

static void nextQtrExample(Args _arg)
{
    date d = nextQtr(today());

    print "Closest date next quarter is "
        + date2Str(d, 2, 2, -1, 2, -1, 4);
    pause;
}

nextYr

Извлекает дату в следующем году, которая соответствует наиболее точно указанной дате.

date nextYr(date date)

Параметры

Параметр Description
date Дата сопоставления в следующем году.

Возвращаемое значение

Ближайшее совпадение с указанной датой, найденной в следующем году.

Замечания

Например, nextyr(29\2\1998) возвращает значение 28\2\1999.

Example

static void nextYrExample(Args _arg)
{
    date d = nextYr(today());

    print "Closest date next year is "
        + date2Str(d, 2, 2, -1, 2, -1, 4);
    pause;
}

prevMth

Извлекает дату в предыдущем месяце, которая соответствует наиболее точно указанной дате.

date prevMth(date date)

Параметры

Параметр Description
date Дата сопоставления за предыдущий месяц.

Возвращаемое значение

Ближайшее совпадение с указанной датой, найденной в предыдущем месяце.

Замечания

prevMth(31\3\1996); // Returns the date 29/02/1996 because 1996 is a leap year.
prevMth(28\2\1998); // Returns the date 28/01/1998.

prevQtr

Извлекает дату в предыдущем квартале, которая соответствует наиболее точно указанной дате.

date prevQtr(date date)

Параметры

Параметр Description
date Дата сопоставления в предыдущем квартале.

Возвращаемое значение

Ближайшее совпадение с указанной датой, найденной в предыдущем квартале.

Замечания

prevQtr(30\4\1998); // Returns the date 30/01/1998.
prevQtr(29\5\1996); // Returns the date 29/02/1996, because 1996 is a leap year.

prevYr

Извлекает дату в предыдущем году, которая соответствует наиболее точно указанной дате.

date prevYr(date date)

Параметры

Параметр Description
date Дата сопоставления за предыдущий год.

Возвращаемое значение

Ближайшее совпадение с указанной датой, найденной в предыдущем году.

Замечания

prevYr(29\2\1996); //Returns the date 28/02/1995 because 1996 is a leap year.
prevYr(28\2\1998); //Returns the date 28/02/1997.

systemDateGet

Извлекает дату сеанса, если она была задана.

date systemDateGet()

Возвращаемое значение

Дата сеанса, если она была задана; в противном случае — системная дата.

Замечания

Рассмотрите возможность использования даты и времени сеанса в меню "Сервис" , чтобы открыть страницу даты и времени сеанса . Эта страница может использоваться для активного задания даты сеанса. После обнаружения этого действия набора системой последующие вызовы функции systemDateGet возвращают дату сеанса. Текущая функция возвращает системную дату. Эта функция не поддерживает часовые пояса.

Example

В следующем примере показана дата в окне Infolog.

static void Job_systemDateGet(Args _arg)
{
    info( date2Str(
        systemDateGet(),        // X++ language function.
        321,                    // 321 = ymd
        DateDay::Digits2,
        DateSeparator::Hyphen,  // separator1
        DateMonth::Digits2,
        DateSeparator::Hyphen,  // separator2
        DateYear::Digits4
    )
);
/*********** Actual Infolog output
Message (03:46:00 pm)
2012-04-16
***********/
}

systemDateSet

Изменяет системную дату.

date systemDateSet(date _date)

Параметры

Параметр Description
_дата Новая дата системы.

Возвращаемое значение

Новая системная дата.

Замечания

Эта функция не влияет на дату сеанса. Этот метод изменяет дату, но время будет иметь значение 0 (ноль).

Example

В следующем примере показано, как задать системную дату на сегодняшний день.

static void systemDateSetExample(Args _arg)
{
    date d = today();
    d = systemDateSet(d);
    print d;
}

timeNow

Извлекает текущее системное время.

int timeNow()

Возвращаемое значение

Количество секунд, прошедших с полуночи.

Example

static void timeNowExample(Args _arg)
{
    int i = timeNow();

    print "The number of seconds since midnight is " + int2Str(i);
    pause;
}

Сегодня

Извлекает текущую дату в системе.

date today()

Возвращаемое значение

Текущая дата.

Example

static void todayExample(Args _arg)
{
    date d = today();
    
    print "Today's date is " + date2Str(d, 0, 2, -1, 2, -1, 4);
    pause;
}

wkOfYr

Вычисляет неделю года, в соответствии с спецификацией ISO 8601.

int wkOfYr(date _date)

Параметры

Параметр Description
_дата Дата вычисления недели года.

Возвращаемое значение

Порядковый номер недели, в которую выполняется параметр _date .

Example

В следующем примере кода сравнивается функция wkOfYr с методом Global::weekOfYear . Функция и метод создают разные результаты.

// X++ job, under AOT > Jobs.
static void WeekTests3Job(Args _args)
{
    int weekNum, i;
    date dateTest;
    str sMessages[];

    //---------------------------------------------
    sMessages[1] = "----- #1.  For Sunday, January 5, 2003 -----";
    dateTest = 512003; // DayMonthYear  format.
    weekNum = wkOfYr(dateTest);
    sMessages[2] = int2str(weekNum) + " = wkOfYr funtion";
    weekNum = Global::weekOfYear(dateTest);
    sMessages[3] = int2str(weekNum) + " = Global::weekOfYear method";
    
    //---------------------------------------------
    sMessages[4] = " ";
    sMessages[5] = "----- #2.  For Wednesday, August 20, 2003 -----";
    dateTest = 2082003;
    weekNum = wkOfYr(dateTest);
    sMessages[6] = int2str(weekNum) + " = wkOfYr funtion";
    weekNum = Global::weekOfYear(dateTest);
    sMessages[7] = int2str(weekNum) + " = Global::weekOfYear method";
    
    //---------------------------------------------
    sMessages[8] = " ";
    sMessages[9] = "----- #3.  For Sunday, December 28, 2003 -----";
    dateTest = 28122003;
    weekNum = wkOfYr(dateTest);
    sMessages[10] = int2str(weekNum) + " = wkOfYr funtion";
    weekNum = Global::weekOfYear(dateTest);
    sMessages[11] = int2str(weekNum) + " = Global::weekOfYear method";
    
    for (i=1; i<= 11; i++)
    {
        Global::info(sMessages[i]);
    }
}

Предыдущий пример отправил следующие сведения в infolog для отображения. В выходных данных показано, что между wkOfYr и Global::weekOfYear есть различия.

Message (01:59:13 pm) ----- 
#1. For Sunday, January 5, 2003 ----- 1 = wkOfYr function 2 = Global::weekOfYear method ----- 
#2. For Wednesday, August 20, 2003 ----- 34 = wkOfYr function 34 = Global::weekOfYear method ----- 
#3. For Sunday, December 28, 2003 ----- 52 = wkOfYr function 1 = Global::weekOfYear method

год

Извлекает год из значения даты .

int year(date _date)

Параметры

Параметр Description
_дата Дата возврата года.

Возвращаемое значение

Год указанной даты.

Замечания

year(0221998); //Returns the value 1998.