上一頁 下一頁

BirtDuration 類別

BirtDuration 類別提供一些函數,來取得 XML 文件中所用之時段或期間中的某些部分。期間的指定格式如下:

PnYnMnDTnHnMnS

其中:

*
*
nY 代表年數
*
nM 代表月數
*
nD 代表天數
*
*
nH 代表時數
*
nM 代表分鐘數
*
nS 代表秒數

例如,以下的值代表期間為 2 年 3 個月又 5 天:

P2Y3M5D

以下的值代表期間為 10 個小時:

PT10H

BirtDuration 類別為靜態的。應用程式無法建立這個類別的實例。

BirtDuration.add

這個函數會將兩段期間加在一起,並且傳回總和。

語法

string BirtDuration.add(string lexicalDuration1, string lexicalDuration2)

參數

lexicalDuration1

String。要新增的第一段期間。

lexicalDuration2

String。要新增的第二段期間。

傳回

String。兩段輸入期間的總和。

範例

下列範例會新增兩段期間:

BirtDuration.add("P1Y3M", "P13M") // 傳回 P2Y4M

BirtDuration.addTo

這個函數會將期間新增至指定的 Date 物件。

語法

Date BirtDuration.add(string lexicalDuration, Date date)

參數

lexicalDuration

String。要新增的期間。

date

Date 物件。要修改的日期和時間。

傳回

Date 物件。此期間提前的日期。

範例

下列範例會將今天的日期和時間增加一年:

var today = new Date();
var annualDate = BirtDuration.addTo(today, "P1Y")

BirtDuration.compare

這個函數會測試某段期間與另一段期間相同,或是大於或小於另一段期間。

語法

integer BirtDuration.compare(string lexicalDuration1, string lexicalDuration2)

參數

lexicalDuration1

String。比較中使用的第一段期間。

lexicalDuration2

String。比較中使用的第二段期間。

傳回

Integer。兩段期間之間的局部順序關係。如果第一段期間較大,則傳回 1,如果它們相等,則傳回 0,如果第二段期間較大,則傳回 -1。

範例

下列表示式比較特定期間的長度:

BirtDuration.compare("P1Y", "P12M"); // 傳回 0
BirtDuration.compare( "P3M" , "P100D" ) // 傳回 -1
BirtDuration.compare( "PT25H" , "P1D" ) // 傳回 1

BirtDuration.day

這個函數會傳回給定期間的天數值。

語法

integer BirtDuration.day( string lexicalDuration)

參數

lexicalDuration

String。要從中取得天數值的期間。

傳回

一個代表指定期間中天數值的整數。

範例

下列範例顯示針對特定期間所傳回的天數值:

BirtDuration.day( "P1Y15DT12H" ) // 傳回 15
BirtDuration.day( "P5Y2M" ) // 傳回 0

BirtDuration.getSign

這個函數會傳回期間的正負號。

語法

integer BirtDuration.getSign(string lexicalDuration)

參數

lexicalDuration

String。要分析的期間。

傳回

Integer。作為乘數的期間正負號。如果是正數期間,則傳回 1,如果是負數期間,則傳回 -1,如果是空值或 0 值,則傳回 0。

範例

下列表示式會分析特定期間的符號:

BirtDuration.getSign("P0Y"); // 傳回 0
BirtDuration.getSign("-P8Y2M3D"); // 傳回 -1

BirtDuration.hour

這個函數會傳回給定期間的小時值。

語法

integer BirtDuration.hour( string lexicalDuration)

參數

lexicalDuration

String。要從中取得小時值的期間。

傳回

一個代表指定期間中小時值的整數。

範例

下列範例顯示針對特定期間所傳回的小時值:

BirtDuration.hour( "P1Y15DT12H" ) // 傳回 12
BirtDuration.hour( "P5Y2M" ) // 傳回 0

BirtDuration.isLongerThan

這個函數會測試某段期間是否長於另一段期間。有時某些期間之間的順序關係無法判斷,例如,一個月 (P1M) 與 30 天 (P30D),或是一年 (P1Y) 與 365 天 (P365D)。當遇到這類情況時,函數會傳回 false。

語法

boolean BirtDuration.isLongerThan( string lexicalDuration1, string lexicalDuration2 )

參數

lexicalDuration1

String。比較中使用的第一段期間。

lexicalDuration2

String。比較中使用的第二段期間。

傳回

Boolean。如果第一段期間長於第二段期間,則為 true;否則就傳回 false。

範例

下列表示式比較特定期間的長度:

BirtDuration.isLongerThan( "P1Y3M" , "P13M" ) // 傳回 true
BirtDuration.isLongerThan( "P2M" , "P62D" ) // 傳回 false
BirtDuration.isLongerThan( "PT25H" , "P1D" ) // 傳回 true

BirtDuration.isShorterThan

這個函數會測試某段期間是否短於另一段期間。有時某些期間之間的順序關係無法判斷,例如,一個月 (P1M) 與 30 天 (P30D),或是一年 (P1Y) 與 365 天 (P365D)。當遇到這類情況時,函數會傳回 false。

語法

boolean BirtDuration.isShorterThan( string lexicalDuration1, string lexicalDuration2 )

參數

lexicalDuration1

String。比較中使用的第一段期間。

lexicalDuration2

String。比較中使用的第二段期間。

傳回

Boolean。如果第一段期間短於第二段期間,則為 true;否則就傳回 false。

範例

下列表示式比較特定期間的長度:

BirtDuration.isShorterThan( "P1Y3M" , "P13M" ) // 傳回 false
BirtDuration.isShorterThan( "P2M" , "P62D" ) // 傳回 false
BirtDuration.isShorterThan( "PT25H" , "P1D" ) // 傳回 false
BirtDuration.isShorterThan( "P27D" , "P1M" ) // 傳回 true

BirtDuration.minute

這個函數會傳回給定期間中的分鐘值。

語法

integer BirtDuration.minute(string lexicalDuration)

參數

lexicalDuration

String。要從中取得分鐘值的期間。

傳回

Integer。一個代表指定期間中分鐘值的數字。

範例

下列範例顯示針對特定期間所傳回的分鐘值:

BirtDuration.minute( "P1Y15DT12H30M45S" ) // 傳回 30
BirtDuration.minute( "P5Y2M8DT15H" ) // 傳回 0

BirtDuration.month

這個函數會傳回給定期間的月數值。

語法

integer BirtDuration.month(string lexicalDuration)

參數

lexicalDuration

String。要從中取得月數值的期間。

傳回

Integer。一個代表指定期間中月數值的數字。

範例

下列範例顯示針對特定期間所傳回的月數值:

BirtDuration.month( "P1Y3M15DT12H30M45S" ) // 傳回 3
BirtDuration.month( "P5Y8DT15H" ) // 傳回 0

BirtDuration.multiply

這個函數會傳回期間與正規數的乘積。

語法

string BirtDuration.multiply(string lexicalDuration, integer factor)

參數

lexicalDuration

String。要相乘的期間。

因數

Integer。要相乘的正規數。

傳回

String。輸入期間與因數的乘積。

範例

下列範例顯示針對特定期間與因數所傳回的乘積:

BirtDuration.multiply( "P1Y3M15DT12H30M45S", 1)
// 傳回 P1Y3M15DT12H30M45S
BirtDuration.multiply( "P5Y8DT15H", 0) // 傳回 P0Y0DT0H

BirtDuration.negate

這個函數會傳回期間的負值。

語法

string BirtDuration.negate(string lexicalDuration)

參數

lexicalDuration

String。要否定的期間。

傳回

String。輸入期間的負值。

範例

下列範例顯示特定期間產生的負數:

BirtDuration.negate( "P1Y3M15DT12H30M45S")
// 傳回 -P1Y3M15DT12H30M45S

BirtDuration.second

這個函數會傳回給定期間中的秒數值。

語法

integer BirtDuration.second(string lexicalDuration)

參數

lexicalDuration

String。要從中取得秒數值的期間。

傳回

Integer。一個代表指定期間中秒數值的數字。

範例

下列範例顯示針對特定期間所傳回的秒數值:

BirtDuration.second( "P1Y3M15DT12H30M45S" ) // 傳回 5
BirtDuration.second( "P5Y8DT15H" ) // 傳回 0

BirtDuration.subtract

這個函數會從另一段期間減去某段期間。

語法

string BirtDuration.subtract(string lexicalDuration1, string lexicalDuration2)

參數

lexicalDuration1

String。要從中減去的期間。

lexicalDuration2

String。從 lexicalDuration1 中減去的期間。

傳回

String。兩段輸入期間的差值。

範例

下列範例會將兩段期間相減:

BirtDuration.subtract("P1Y3M", "P13M") // 傳回 P0Y2M

BirtDuration.timeInMills

這個函數會傳回給定期間中,從指定起始日期算起的毫秒數。期間中的毫秒數可能因起始日期而有改變。例如,一個月期間可以是 28、29、30 或 31 天,這全視起始日期而定。如果開始日期是 1 月 1 日,此函數會計算 1 月 1 日和 2 月 1 日(排除 2 月 1 日)之間的毫秒數,其等於 2678400000 毫秒或 31 天。如果起始日期是 2009 年(閏年)2 月 1 日,函數會計算 2009 年 2 月 1 日至 3 月 1 日間的毫秒數,而等於 2505600000 毫秒或 29 天。

語法

Number BirtDuration.timeInMills( string lexicalDuration, Date startDate )

參數

lexicalDuration

String。要取得其長度(毫秒)的期間。

startDate

Date 物件。代表起始日期。

傳回

Number 物件。指定期間中的毫秒數。

範例

下列範例顯示針對特定期間與起始日期所傳回的毫秒數:

BirtDuration.timeInMills( "P1Y3M10D" , "2009-01-01" ) // 傳回 40172400000
BirtDuration.timeInMills( "P1Y3M10D" , "2008-01-01" ) // 傳回 40258800000
BirtDuration.timeInMills( "PT6H45M20S" , "2009-01-01" ) // 傳回 24320000

BirtDuration.year

這個函數會傳回給定期間中的年數值。

語法

integer BirtDuration.year(string lexicalDuration)

參數

lexicalDuration

String。要從中取得年數值的期間。

傳回

Integer。一個代表指定期間中年數值的數字。

範例

下列範例顯示針對特定期間所傳回的年數值:

BirtDuration.year( "P1Y3M15DT12H30M45S" ) // 傳回 1
BirtDuration.year( "P8DT15H" ) // 傳回 0

© Copyright Actuate Corporation 2013