共用方式為


X++ 日期執行階段函式

備註

社區興趣小組現在已從 Yammer 轉移到 Microsoft Viva Engage。 若要加入 Viva Engage 社群並參與最新的討論,請填寫 [ 要求存取財務和營運 Viva Engage 社群 表單 」 ,並選擇您要加入的社群。

本文說明日期執行時間函式。

日期名稱

擷取由數字指定的星期幾名稱。

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;
}

月日

計算指定日期的月份日數。

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;
}

週日

計算指定日期的一週中的天數。 便條: 星期一由 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;
}

日數

計算 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;
}

結束月末

計算指定日期當月的最後日期。

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 (零,1900 年 1 月 1 日) 日期。

Example

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

mth名稱

擷取指定月份的名稱

str monthName(int number)

參數

參數 Description
數字 月份的數字。

返回值

指定月份的名稱。

備註

number 參數的有效值為 112。 1 月由 1 表示, 12 月由 12 表示。

Example

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

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

月數

擷取指定日期的年份月份數。 便條: 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;
}

下一個月號

擷取下個月中與指定日期最接近的日期。

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;
}

下一個季度

擷取下一季中與指定日期最接近的日期。

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;
}

下一年

擷取與指定日期最接近的下一年日期。

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;
}

上一頁

擷取上個月中與指定日期最接近的日期。

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.

上一頁Qtr

擷取上一季中最接近指定日期的日期。

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.

上一頁

擷取前一年中與指定日期最接近的日期。

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 函式會傳回階段作業日期。 today 函數會傳回系統日期。 此功能不支援時區。

Example

下列範例顯示「資訊日誌」視窗中的日期。

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
***********/
}

系統日期集

變更系統日期。

date systemDateSet(date _date)

參數

參數 Description
_日期 系統的新日期。

返回值

新系統日期。

備註

此功能不會影響工作階段日期。 此方法會變更日期,但時間會設定為 0 (零)。

Example

下列範例將系統日期設定為今天的日期。

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

時間現在

擷取目前的系統時間。

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;
}

週數

根據 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]);
    }
}

上一個範例將下列資訊傳送至資訊日誌以供顯示。 輸出顯示 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.