第九十七章 Caché 函数大全 $ZTIMEH 函数
验证时间并将其从显示格式转换为Caché内部格式。
大纲
$ZTIMEH(time,tformat,erropt,localeopt)
$ZTH(time,tformat,erropt,localeopt)
参数
- time 要转换的时间值。
- tformat 可选-一个数字值,它指定要转换的时间格式。
- erropt 可选-如果将time参数视为无效,则返回该表达式。
- localeopt 可选-一个布尔标志,指定要使用的语言环境。为0时,当前语言环境确定时间分隔符,以及其他用于格式化时间的字符,字符串和选项。为1时,ODBC语言环境确定这些字符,字符串和选项。不能更改ODBC语言环境。它用于格式化日期和时间字符串,这些日期和时间字符串在做出了不同的国家语言支持(NLS)选择的Caché流程之间可移植。默认值为0。
指定参数值之间的省略参数由占位符逗号指示。末尾的占位符逗号不是必需的,但允许使用。逗号之间允许有空格,以指示省略的参数。
描述
$ZTIMEH函数将时间值从$ZTIME函数产生的格式转换为特殊变量$HOROLOG和$ZTIMESTAMP的格式。如果未指定可选参数tformat,则输入时间必须采用“hh:mm:ss.fff ...”格式。否则,必须使用用于从$ZTIME函数生成可打印时间的相同整数格式代码。用于正确转换的时间。
参数
tformat
支持的值如下:
| Code | 描述 |
|---|---|
| -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小时制)。 |
若要确定您的语言环境的默认时间格式,请调用GetFormatItem()NLS类方法:
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeFormat")
1
erropt
此参数禁止显示与无效时间值关联的错误消息。该函数将返回erropt指示的值,而不是生成<ILLEGAL VALUE>错误消息。
localeopt
此参数选择用户的当前语言环境定义(0)或ODBC语言环境定义(1)作为时间选项的来源。不能更改ODBC语言环境。它用于格式化日期和时间字符串,这些日期和时间字符串在做出了不同的国家语言支持(NLS)选择的Caché流程之间可移植。
ODBC语言环境时间定义如下:
- 时间格式默认为1。时间分隔符为“:”。时间精度为0(无小数秒)。
- AM和PM指示器分别为“ AM”和“ PM”。使用单词"Noon" and "Midnight"。
示例
当输入时间为“ 14:43:38”时,以下示例均返回53018:
DHC-APP>SET time="14:43:38"
DHC-APP>WRITE !,$ZTIMEH(time)
53018
DHC-APP> WRITE !,$ZTIMEH(time,1)
53018
当输入时间为“14:43:38.974”时,以下示例返回53018.974:
DHC-APP>SET time="14:43:38.974"
DHC-APP>WRITE $ZTIMEH(time,1)
53018.974
注意
小数秒
与$ZTIME函数不同,$ZTIMEH不允许指定精度。 $ZTIMEH返回的原始时间格式中的任何小数秒都保留在$ZTIMEH返回的值中。
无效的参数值
如果指定了无效的tformat代码(小于-1或大于4的整数,零或非整数值),则会收到<FUNCTION>错误。
如果不提供错误值,则在以下情况下会收到<FUNCTION>错误:
- 用小时值指定的时间超出允许的0到23(含)范围。
- 用分钟值指定的时间超出允许的范围0到59(包括)。
- 用第二个值指定的时间超出允许的范围0到59(包括)。
- 指定一个使用定界符的时间值,而不是当前语言环境的TimeSeparator属性的值。
时间分隔符
默认情况下,Caché使用当前语言环境的TimeSeparator属性的值来确定时间字符串的定界符。默认情况下,分隔符为“:”;所有文档示例都使用此定界符。
若要确定语言环境的默认时间分隔符,请调用GetFormatItem()NLS类方法:
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeSeparator")
:
时间后缀
默认情况下,Caché使用当前语言环境中的属性来确定其时间后缀的名称。对于$ZTIMEH,这些属性(及其相应的默认值)为:
- AM (“AM”)
- PM (“PM”)
- Midnight (“MIDNIGHT”)
- Noon (“NOON”)
本文档将始终对这些属性使用这些默认值。
若要确定语言环境的默认时间后缀,请调用GetFormatItem()NLS类方法,如下所示:
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("AM")
AM
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("PM")
PM
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("Midnight")
MIDNIGHT
DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("Noon")
NOON