X++ 日期运行时函数

注释

社区兴趣团体现已从 Yammer 迁移到Microsoft Viva Engage。 若要加入 Viva Engage 社区并参与最新讨论,请填写 “请求访问财务和运营 Viva Engage 社区 ”表单,然后选择要加入的社区。

本文介绍日期运行时函数。

dayName

检索由数字指定的星期几的名称。

str dayName(int number)

参数

参数 Description
数字 一周内的一天数。

返回值

数字参数指定的星期几。

注解

number 参数的有效值为 17。 星期 一由 1、星期二到 27 表示。

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、星期二到 27 表示。

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 月 1 日到指定日期之间的天数。

int dayOfYr(date _date)

参数

参数 Description
_日期 指定年份、月和日的日期。

返回值

1 月 1 日至指定日期(含)之间的天数。

注解

1 月 1 日为 1,12 月 31 日为 365366 ,具体取决于年份是否为跃年。

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
一个表示月份日期的整数。
月份 一个整数,表示年份的月份。
一个表示年份的整数,该年份必须介于 1900 和 2154 之间。

返回值

一个 日期 值,该值基于 日期月份年份 参数的值。

注解

如果日期无效,此方法返回 0 (零,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 月表示为 112 月 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 月为 1,2 月为 2,12为 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\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 以供显示。 输出显示 wkOfYrGlobal::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.