第九十七章 Caché 函数大全 $ZTIMEH 函数

200 阅读2分钟

第九十七章 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