第九十六章 Caché 函數大全 $ZTIME 函數 第九十六章 Caché 函數大全 $ZTIME 函數 大綱 參數 示例 注意

第九十六章 Caché 函數大全 $ZTIME 函數

驗證時間,並將其從內部格式轉換爲指定的顯示格式。

大綱

$ZTIME(htime,tformat,precision,erropt,localeopt)
$ZT(htime,tformat,precision,erropt,localeopt)

參數

  • htime 可以指定爲數值、變量名或表達式的內部系統時間。
  • tformat 可選—一個整數值,指定要以何種格式返回時間值。
  • precision 可選-一個數值,指定要用來表示時間的小數位數。如果省略,小數秒將被截斷。
  • erropt 可選-如果認爲htime參數無效,則返回表達式。
  • localeopt 可選-指定要使用的區域設置的布爾標誌。爲0時,當前區域設置確定時間分隔符以及用於格式化時間的其他字符、字符串和選項。爲1時,ODBC區域設置確定這些字符、字符串和選項。ODBC區域設置不能更改;它用於格式化日期和時間字符串,這些字符串可以在做出不同國家語言支持(NLS)選擇的Caché進程之間移植。默認值爲0。

指定參數值之間的省略參數由佔位符逗號表示。尾隨佔位符逗號不是必需的,但允許使用。逗號之間允許使用空格表示省略的參數。

描述

$ZTIME函數將內部系統時間(htime)轉換爲可打印格式,htime是以時間格式從特殊變量$HOROLOG$ZTIMESTAMP指定的。如果不使用可選參數,時間將以“hh:mm:ss”格式返回;其中“hh”是24小時制中的小時,“mm”是分鐘,“ss”是秒。否則,時間將以TF format和precision參數的值指定的格式返回。

參數

htime

該值表示自午夜以來經過的秒數。它是$HOROLOG值的第二個組成部分,可以使用$PIECE($HOROLOG,",",2)進行提取。 htime可以是整數,也可以是帶有由precision指定的精度的小數位數的小數。

對於tformat值–1到4,htime有效值的整數部分必須在0到86399的範圍內。(-0視爲0。)此範圍之外的值會產生錯誤。對於tformat值9和10,htime有效值還可以包括負數和大於86399的數。

tformat

支持的值如下:

tformat 描述
-1 從當前語言環境的TimeFormat屬性獲取有效格式值,默認爲1。這是默認行爲,如果未指定tformat且localeopt未指定或爲0。
1 “ hh:mm:ss”的形式表示時間(24小時制)。
2 “ hh:mm”的形式表示時間(24小時制)。
3 “ hh:mm:ss [AM / PM]”的形式表示時間(12小時制)。
4 “ hh:mm [AM / PM]”的形式表示時間(12小時制)。
9 對於MultiValue支持。與tformat 1(“ hh:mm:ss” 24小時制)相同,其數值介於0到86399之間。還接受負時間值和大於86399的時間值。
10 對於MultiValue支持。與tformat 2(“ hh:mm” 24小時制)相同,其數值介於0到86399之間。還接受負時間值和大於86399的時間值。

若要確定語言環境的默認時間格式,請調用GetFormatItem()NLS類方法:。

DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeFormat")
1

在12小時制的時鐘格式中,早上和晚上由時間後綴表示,此處顯示爲AM和PM。若要確定語言環境的默認時間後綴,請調用以下NLS類方法:

DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("AM")
AM
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("PM")
PM

tformat 9 and 10

提供了時間格式9和10以支持MultiValue。對於在ObjectScript允許範圍內的所有內部時間值:0到86399,它們與tformats 1和2相同。與其他時間格式一樣,-0被視爲0。

時間格式9和10接受負數值,並返回相應的負時間值。 tformat 9返回一個負的htime作爲“ -hh:mm:ss”(24小時制)。 tformat 10返回的負htime爲“ -hh:mm”(24小時制)。對於時間格式10,“ – 59.9”返回“ –00:00”,“ – 60”返回“ –00:01”。

時間格式9和10接受大於86399的數值,並返回相應的時間。對於時間格式10,“ 86400”返回“ 24:00”,“ 400000”返回“ 111:06”。

時間格式9對於所有數值,返回整秒,並可選地返回小數秒。 precision參數指定小數秒的位數。

precision

該功能顯示精確度參數中指定的小數秒後的小數秒數。例如,如果輸入精度值3,則$ZTIME會將小數秒顯示爲小數點後三位。如果輸入值9,$ZTIME將顯示小數秒到小數點後九位。支持的值如下:

Value Description
-1 從當前語言環境的TimePrecision屬性獲取精度值,默認爲0。這是默認行爲,如果未指定precision。
n 大於或等於0的值導致將時間表示爲n個小數位。
0 如果設置爲0或默認值爲0,則小數秒將被截斷。

若要確定語言環境的默認時間精度,請調用GetFormatItem()NLS類方法:

DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimePrecision")
0

erropt

此參數禁止顯示與無效的htime值相關的錯誤消息。該函數將返回erropt指示的值,而不是生成錯誤<ILLEGAL VALUE>消息。

localeopt

此參數選擇用戶的當前語言環境定義(0)或ODBC語言環境定義(1)作爲時間選項的來源。不能更改ODBC語言環境。它用於格式化日期和時間字符串,這些日期和時間字符串在做出了不同的國家語言支持(NLS)選擇的Caché流程之間可移植。

ODBC語言環境時間定義如下:

  • 時間格式默認爲1。時間分隔符爲“:”。時間精度爲0(無小數秒)。
  • AM和PM指示器分別爲“AM”和“PM”。使用單詞"Noon" and "Midnight"。

示例

要使用特殊變量$HOROLOG返回當前本地時間,必須使用$PIECE函數指定$HOROLOG的第二部分。以下內容以24小時制“13:55:11”返回時間:

DHC-APP>WRITE $ZTIME($PIECE($HOROLOG,",",2),1)
09:00:57

在下面的示例中,將htime設置爲當前時間的$PIECE($HOROLOG,",",2)。這些示例說明如何使用$ZTIME的各種形式返回不同的時間格式。

以下示例在許多情況下以“13:28:55”的格式返回時間;但是,此格式取決於語言環境:

DHC-APP>SET htime=$PIECE($HOROLOG,",",2)
 
DHC-APP>WRITE $ZTIME(htime)
09:02:44

以下示例以“13:28:55.999”格式返回時間:

DHC-APP>SET htime=$PIECE($HOROLOG,",",2)
 
DHC-APP>WRITE $ZTIME(htime,1,3)
09:03:46.000

以下示例以“13:28:55.999999999”格式返回時間:

DHC-APP>SET htime=$PIECE($HOROLOG,",",2)
 
DHC-APP>WRITE $ZTIME(htime,1,9)
09:03:46.000000000

以下示例以“13:28”格式返回時間:

DHC-APP>SET htime=$PIECE($HOROLOG,",",2)

DHC-APP>WRITE $ZTIME(htime,2)
09:03

以下示例以“01:28:24 PM”格式返回時間:

DHC-APP>SET htime=$PIECE($HOROLOG,",",2)
 
DHC-APP>WRITE $ZTIME(htime,3)
09:03:46AM

以下示例以“01:28 PM”格式返回時間:

DHC-APP>SET htime=$PIECE($HOROLOG,",",2)

DHC-APP>WRITE $ZTIME(htime,4)
09:03AM

下面的示例以“13:45:56.021”的格式返回時間,即當前UTC時間,精度爲小數點後三位:

DHC-APP>SET t=$ZTIME($PIECE($ZTIMESTAMP,",",2),1,3)
 
DHC-APP>WRITE "Current UTC time is ",t
Current UTC time is 01:05:47.548

注意

無效的參數值

  • 如果指定了無效的tformat值,則會收到<FUNCTION>錯誤。
  • 如果htime指定的值超出0到86399(含)的允許範圍,並且不提供<ILLEGAL VALUE>錯誤值,則除9和10以外的所有tformat都會收到錯誤。

Decimal Delimiter

$ZTIME將使用當前語言環境的DecimalSeparator屬性的值作爲整數的整數和小數部分之間的分隔符。 DecimalSeparator的默認值爲“。”;所有文檔示例都使用此定界符。

若要確定語言環境的默認十進制分隔符,請調用GetFormatItem()NLS類方法

DHC-APP> WRITE ##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator")
.

Time Delimiter

默認情況下,Caché使用當前語言環境的TimeSeparator屬性的值來確定時間字符串的定界符。默認情況下,分隔符爲“:”;所有文檔示例都使用此定界符。

若要確定語言環境的默認時間分隔符,請調用以下NLS類方法:

DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeSeparator")
:

時間後綴

默認情況下,Caché使用當前語言環境中的屬性來確定其時間後綴的名稱。對於$ZTIME,這些屬性(及其相應的默認值)爲:

  • AM (“AM”)
  • PM (“PM”)

本文檔將始終對這些屬性使用這些默認值。

若要確定語言環境的默認時間後綴,請調用以下NLS類方法:

DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("AM")
AM
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("PM")
PM
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章