第十四章:日期和时间
第一节:计时方式
EL中有两种记录日期和时间的方式,一种是EL标准的日期和时间格式,一种是儒略日计时方式。关于儒略日的计时方式,可能非常的陌生,主要在天文学家使用,想非常详细理解的可以参照这个网址:http://www.kepuchina.cn/wiki/ct/201802/t20180216_552422.shtml
EL中一般把日期和时间的两种表示方式分开表述,另外还可以合二为一的表述,下面是参照EL的标准文档的解释,分别对照儒略日的表示方式:
日期格式有:
ELDate 日期格式:日期格式为 YYYMMdd,其中 YYY 为从 1900 起至 今的年份,MM 为月份,dd 日,总共是 7 位数的数值(2000 年之前, 为 6 位数的数值)。
儒略日(Julian day)日期格式:儒略日表示法是以基准日期开始, 每过一天,数值加 1 的表示法,因此,它是一个递增的等差数列,没 有月份,也没有年份的概念。在 MultiCharts 中,儒略日的起始点是 1900/1/1,当天的儒略日是 2。因此 1900/1/2 的儒略日为 3,依次类 推。
时间格式有:
ELTime 标准时间格式:是常见的 HHmm 格式的数值,HH 是小时数, 采用 24 小时制,MM 是分钟数。例如,下午 1:00=1300。为了处理更 加精确的时间计算,也有包含秒数的 ELTime 格式,表示成 HHmmss, ss 是秒数,同样是数值类型。例如,下午 1:00:59=130059。包含秒数 的关键字都含有_s 字尾。
儒略日时间格式:儒略日中可以包含小数,小数值用来显示时间,代 表从凌晨 0:00 开始经过的时间。这个时间会以秒数表示,而一天有 86400 秒,所以儒略日的小数值意义为:0.1 儒略日=0.1*86400=8640 秒。例如:凌晨 1 点若要以儒略日表示的话为:1 小时*60 分*60 秒 /86400 秒=0.04167 儒略日,得出凌晨一点等于 0.04167 儒略日。 以下关键字参数说明中的“儒略日”即“DateTime”。
第二节:常用函数
2.1 ComputerDateTime(儒略日)
# 语法:
语法 ComputerDateTime
# 示例:
若电脑日期时间为 2008 年 1 月 1 日上午 6:00, 对应的 ComputerDateTime 返回值为 39448.25000000
# 说明:
返回当前电脑日期时间的儒略日值。 整数部分是儒略日日期,小数部分为儒略日时间。
2.2 CurrentDate(EL标准)
# 语法:
语法 CurrentDate
# 示例:
如果电脑日期为 2008 年 10 月 30 日,则 CurrentDate 返回值为 1081030
# 说明:
返回当前电脑的日期值,返回日期为 YYYMMdd 格式。
2.3 CurrentTime(EL标准)
# 语法:
语法 CurrentTime
# 示例:
电脑时间为 10:45AM 时,CurrentTime 返回值为 1045 电脑时间为 3:45PM 时,CurrentTime 返回值为 1545
# 说明:
返回一个数值,表示电脑当前时间。时间格式为 HHmm, 24 小时制,1300=1:00PM。
2.4 CurrentTime_s(EL标准)
# 语法:
语法 CurrentTime_s
# 示例:
电脑时间 10:45:25AM 时,CurrentTime_s 返回值为 104525 电脑时间为 3:45:00PM 时,CurrentTime_s 返回值为 154500
# 说明:
返回一个数值,表示电脑当前时间(包含秒)。时间格式为 HHmmss,24 小时制,130000=1:00:00PM。
2.5 DateTime2ELTime(儒略日)
# 语法:
语法 DateTime2ELTime(儒略日)
参数 儒略日——数值表达式,表示儒略日格式时间。
# 示例:
DateTime2ELTime(39449.65625000) 返回值为 1545,表示3:45PM
# 说明:
将指定儒略日格式的时间转换为对应的 ELTime 的 HHmm 格 式时间。
2.6 DateTime2ELTime_s(儒略日)
# 语法:
语法 DateTime2ELTime_s(儒略日)
参数 儒略日——数值表达式,表示儒略日格式时间。
# 示例:
DateTime2ELTime_s(39449.646354167) 返回值为 153045,表示 3:30:45 PM
# 说明:
将指定儒略日格式的时间转换为对应的 ELTime 的 HHmmss格式时间。
2.7 DateTimeToString(儒略日)
# 语法:
语法 DateTimeToString(儒略日)
参数 儒略日——数值表达式,表示儒略日格式日期时间。
注意 范例中返回值默认为 US 时区的日期时间格式,日期时间格
式可以通过 WIN 系统的控制面板中设置。
# 示例:
DateTimeToString(39448.25000000) 返回字符串 "1/1/20086:00:00 AM"
# 说明:
将指定的儒略日日期时间转换为字符串格式返回。
2.8 DateToJulian(EL标准)
# 语法:
语法 DateToJulian(YYYMMdd)
参数 YYYMMdd——数值表达式,表示 YYYMMdd 格式的日期。
# 示例:
DateToJulian(1080101) 表示指定日期为 2008 年 1 月 1 日, 返回值 39448 DateToJulian (990402) 表示指定日期为 1999 年 4 月 2 日, 返回值 36252
# 说明:
将指定的日期转换为儒略日格式返回。 指定日期格式为 YYYMMdd,YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。
2.9 DateToString(儒略日)
# 语法:
语法 DateToString(儒略日)
参数 儒略日——数值表达式,表示儒略日格式日期。
注意 范例中的返回值默认为 US 时区的日期时间格式,日期时间
格式可以通过 WIN 系统的控制面板中设置。
# 示例:
DateToString(39448.25000000) 返回字符串 "1/1/2008"
# 说明:
将儒略日格式的日期(整数部分)转换成字符串格式返回。
2.10 DayFromDateTime(儒略日)
# 语法:
语法 DayFromDateTime(儒略日)
参数 儒略日——数值表达式,表示儒略日格式日期。
注意 范例中返回值默认为 US 时区的日期时间格式,日期时间格
式可以通过 WIN 系统的控制面板中设置。
# 示例:
DayFromDateTime(39449.25000000) 返回值为 2,表示 2008年 1 月的第二天。
# 说明:
返回指定的儒略日所对应的日期(当月第几天)。
2.11 DayOfMonth(EL标准)
# 语法:
语法 DayOfMonth(YYYMMdd)
参数 YYYMMdd——数值表达式,表示 YYYMMdd 格式的日期。
# 示例:
DayOfMonth(1080101) 返回值为 1,表示 2008 年 1 月的第一天。 DayOfMonth(990605) 返回值为 5,表示 1999 年 6 月的第五天。
# 说明:
返回指定的 ELDate 格式日期所对应的日期(当月的第几 天)。 指定日期格式为 YYYMMdd,Y YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。
2.12 DayOfWeek(EL标准)
# 语法:
语法 DayOfWeek(YYYMMdd)
参数 YYYMMdd——数值表达式,表示 YYYMMdd 格式的日期。
# 示例:
DayOfWeek(1080101) 返回值为 2,表示 2008 年 1 月 1 日是星期二。 DayOfWeek(990603) 返回值为 4,表示 1999 年 6 月 3 日是星期四。
# 说明:
根据指定 ELDate 格式日期取得当天为该周第几天的数值。 如 0=星期天,1=星期一,依次类推。 指定日期格式为 YYYMMdd,YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。
2.13 DayOfWeekFromDateTime(儒略日)
# 语法:
语法 DayOfWeekFromDateTime(儒略日)
参数 儒略日——数值表达式,表示儒略日格式日期。
# 示例:
DayOfWeekFromDateTime(39448.25000000) 返回值为 2,表示 2008 年 1 月 1 日是星期二。
# 说明:
依儒略日的日期取得当天为该周第几天的数值。如 0=星期 天,1=星期一,以此类推。
2.14 El_DateStr(EL标准)
# 语法:
语法 El_DateStr(dd, MM,YYYY)
参数
dd——数值表达式,指定天。
MM——数值表达式,指定月。
YYYY——数值表达式,指定年。
# 示例:
El_DateStr(02,04,2008) 会返回字符串 "20080402",相当于2008 年 4 月 2 日。
# 说明:
返回值为 8 位字符的字符串,表示指定日期。字符串格式为 YYYYMMdd,YYYY 表示四位的年,MM 表示月,dd 表示日, 如 20130104。这个函数会经常使用。
2.15 El_DateToDateTime/ElDateToDateTime(EL标准)
# 语法:
语法
EL_DateToDateTime(YYYMMdd)
或
ELDateToDateTime(YYYMMdd)
参数 YYYMMdd——数值表达式,表示 EL 日期,YYYMMdd 格式的日期。
# 示例:
ELDateToDateTime(1080101) 返回值为 39448.00000000 ELDateToDateTime(990402) 返回值为 36252.00000000
# 说明:
将指定的 ELDate 格式日期转换为儒略日。 指定日期格式为 YYYMMdd,YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。
2.16 EL_TimeToDateTime/ELTimeToDateTime(EL标准)
# 语法:
语法 ELTimeToDateTime(HHmm)
参数 HHmm——数值表达式,表示时间。
# 示例:
ELTimeToDateTime(1015) 返回值为 0.42708333,对应时间为 10:15 AM ELTimeToDateTime(1545) 返回值为 0.65625000, 对应时间为 3:45 PM
# 说明:
将指定的 ELTime 格式的时间转换为儒略日时间。 指定时间格式为 HHmm,24 小时制,1300=1:00PM。
2.17 EL_TimeToDateTime_s/ELTimeToDateTime_s(EL标准)
# 语法:
语法
EL_TimeToDateTime_s(HHmmss)
或
ELTimeToDateTime_s(HHmmss)
参数 HHmmss——数值表达式,表示时间(包含秒)。
# 示例:
ELTimeToDateTime_s(101525) 返回值为 0.427372685, 对应时间为 10:15:25 AM ELTimeToDateTime_s(154500) 返回值为 0.656250000, 对应时间为 3:45:00 PM
# 说明:
返回指定时间(包含秒)所对应的儒略日的时间。 指定时间格式为 HHmmss,24 小时制,130000=1:00:00PM。
2.18 EncodeDate(EL标准)
# 语法:
语法 EncodeDate(YY,MM,dd)
参数
YY——数值表达式,表示两位数的年。
MM——数值表达式,表示月份。
dd——数值表达式,表示天数。
# 示例:
EncodeDate(08,01,01) 返回值为 39448.00000000,对应指定日期为 2008 年 1 月 1 日。
# 说明:
返回指定日期对应的儒略历日期。
2.19 EncodeTime(EL标准)
# 语法:
说明 返回指定时间对应的儒略历时间。 语法 EncodeTime(HH,mm,ss,mmm) 参数 HH——数值表达式,指定 24 小时制时间。 mm——数值表达式,指定分钟。 ss——数值表达式,指定秒。 mmm——数值表达式,指定微秒。
# 示例:
EncodeTime(16,29,55,500) 返回值为 0.6874479167,相当于指定时间 16:29:55.500
# 说明:
返回指定时间对应的儒略历时间。
2.20 FormatDate(儒略日)
# 语法:
语法 FormatDate("FormatString", DateTime) 参数 FormatString——格式字符,指定输出的日期字符串表达式 的格式。 格式字符元素有: d——前面不带零的个位天数 dd——前面带零的天数 ddd——三字母缩写表示星期 dddd——星期全名 M——不带零的个位数字月份 MM——带零的数字月份 MMM——三字母缩写表示月份 MMMM——月份全名 y——年份后两位,小于十则前面不带零 yy——年份后两位,小于十则前面带 yyyy——四位数年 DateTime——数值表达式,代表儒略日日期
# 示例:
FormatDate("dddd, MMMM dd, yyyy.",39469.250) 返回字符串 "Tuesday, January 22, 2008." FormatDate("M/d/y",39469.250) 返回字符串"1/22/8" FormatDate("dd-MM-yy",39469.250) 返回字符串"22-01-08" FormatDate("Next ddd is: MMM dd",39469.250) 返回字符串"Next Tue is: Jan 22"
# 说明:
将指定的儒略日日期(整数部分)转换为特定的字符串表达 式,返回特定格式的字符串表达式。 返回的字符串表达式,包含由格式字符规定的缩写和分隔 符。格式字符中包含顺序排列的一个或多个元素,每个元素 代表日期的特定部分。字符串中插入使用空格或分隔符。
2.21 FormatTime(儒略日)
# 语法:
语法 FormatTime("FormatString", DateTime) 参数 FormatString ——格式字符,指定输出的时间字符串表达式 的格式。 格式字符元素有: h——12 小时制 AM/PM 格式时间,个位前不加 0 hh——12 小时制 AM/PM 格式时间,个位前加 0 H——24 小时制时间,个位时间前不加 0 HH——24 小时制时间,个位时间前加 0 m——分钟数,个位前不加 0 mm——分钟数,个位前加 0 s——秒数,个位前不加 0 ss——秒数,个位前加 0 t——单字母,表示 AM/PM tt——多字母,表示 AM/PM DateTime——数值表达式,代表儒略日时间。
# 示例:
FormatTime("hh:mm:ss t",39469.6674) 返回字符串 "04:01:03 P" FormatTime("h tt",39469.6674) 返回字符串 "4 PM" FormatTime("HH:mm",39469.6674) 返回字符串 "16:01" FormatTime("m MIN s SEC",39469.6674) 返回字符串 "1 MIN3 SEC"
# 说明:
返回值特定格式的字符串表达式,对应儒略历的时间(小数 部分)。 返回的字符串表达式,包含由格式字符规定的缩写和分隔 符。格式字符中包含顺序排列的一个或多个元素,每个元素 代表日期的特定部分。字符串中插入使用空格或分隔符。
2.22 年月日、小时分分钟秒、毫秒(EL标准)
# 语法:
1、Date: 表示为日期: 2000年之前:表示日期格式为99MMDD,表示1999年MM月DD日 2000年之后:表示日期格式为100MMDD,表示为2000年MM月DD日 2、Year 语法 Year(YYYMMdd) 参数 YYYMMdd——数值表达式,表示 YYYMMdd 格式时间。 3、Month 语法 MonthFromDateTime(儒略日) 参数 儒略日——数值表达式,儒略日格式的日期时间。 4、Day
# 示例:
Month(1080101) 返回值为 1,表示月份为一月。 Month(990605) 返回值为 6,表示月份为六月。 取得指定 EL 日期的月份。EL 日期格式为 YYYMMdd,YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。 Year(1080101) 返回值为 108,表示 2008 年 Year(990605) 返回值为 99,表示 1999 年 返回指定日期的年份 EL 日期格式为 YYYMMdd,YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。
# 说明:
2.23 星期
# 语法:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday 返回值: 1 2 3 4 5 6 7
# 示例:
# 说明:
分别表示星期几的数字表示。
2.24 HoursFromDateTime(儒略日)
# 语法:
语法 HoursFromDateTime(儒略日)
参数 儒略日——数值表达式,代表儒略日日期时间。
# 示例:
HoursFromDateTime(39449.85000000) 返回值 20,表示 8PM
# 说明:
返回指定儒略日对应的小时数。小时数为 24 小时制,13=1 PM
2.25 IncMonth(儒略日)
# 语法:
语法 IncMonth(儒略日,月数) 参数 儒略日——数值表达式,代表儒略日期; 月数——数值表达式,代表要调整的月数。若为正值则往后 增加;若为负值,则往前减少。 注意 若日期为 29~31 的日期,位移后碰到小月,则日期可能会在 次月的月初。
# 示例:
IncMonth(39417,1) 取得 2007/12/1 增加一个月的儒略日日期,返回值为 39448,表示 2008/1/1。 IncMonth(36252, -2) 取得 1999/4/2 向前两个月的儒略日日期,返回值为 36193,表示 1999/2/2。
# 说明:
返回一个数值,表示指定儒略日向前或向后指定月数的儒略 日期。
2.26 JulianToDate(儒略日)
# 语法:
语法 JulianToDate(儒略日)
参数 儒略日——数值表达式,代表儒略日期
# 示例:
JulianToDate(39448) 返回值为 1080101,代表 2008/1/1。 JulianToDate(36252) 返回值为 990402,代表 1999/4/2。
# 说明:
将指定的儒略日转换为 EL 日期返回。 儒略日的整数部分表示从 1990.01.01 至今的天数,小数部 分表示午夜零点开始至现在时间与一天 24 小时的比值。 EL 日期格式为 YYYMMdd,YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。
2.27 LastCalcJDate(儒略日)
# 语法:
LastCalcJDate
# 示例:
最后一根 K 线的日期为 2008/1/1 时,LastCalcJDate 返回值为 39448。
# 说明:
返回最后一根 K 线的儒略日日期。 儒略日的整数部分表示从 1990.01.01 至今的天数,小数部 分表示午夜零点开始至现在时间与一天 24 小时的比值。
2.28 LastCalcMMTime
# 语法:
语法 LastCalcMMTime
# 示例:
最后一根 K 线的时间是 2:10PM,则 LastCalcMMTime 返回值为 850
# 说明:
返回从凌晨开始到最后一根完成 K 线所经过的时间,以分钟 计算。
2.29 LastCalcSSTime
# 语法:
语法 LastCalcSSTime
# 示例:
最后一根 K 线的时间是 2:10:30 PM,则 LastCalcSSTime 返回值为 51030
# 说明:
返回从凌晨开始到最后一根 K 线所经过的时间,以秒数计 算。
2.30 MilliSecondsFromDateTime
# 语法:
# 示例:
# 说明:
保留以供将来使用。
2.31 MinutesFromDateTime(儒略日)
# 语法:
语法 MinutesFromDateTime(儒略日)
参数 儒略日——数值表达式,儒略日格式的日期时间。
# 示例:
MinutesFromDateTime(39449.35000000) 返回值为 24,表示取得 39449.35000000(8:24AM)的分钟数 24。
# 说明:
依儒略日取得分钟。 儒略日的整数部分表示从 1990.01.01 至今的天数,小数部 分表示午夜零点开始至现在时间与一天 24 小时的比值。
2.32 MonthFromDateTime(儒略日)
# 语法:
语法 MonthFromDateTime(儒略日)
参数 儒略日——数值表达式,儒略日格式的日期时间。
# 示例:
MonthFromDateTime (39600.25000000) 返回值为 6,表示月份为六月。
# 说明:
取得指定儒略日日期的月份。 儒略日的整数部分表示从 1990.01.01 至今的天数,小数部 分表示午夜零点开始至现在时间与一天 24 小时的比值。
2.33 SecondsFromDateTime(儒略日)
# 语法:
语法 SecondsFromDateTime(儒略日)
参数 儒略日——数值表达式,儒略日格式的时间。
# 示例:
SecondsFromDateTime(39449.35440000)返回值为 20,表示39449.35440000(8:30:20 AM)秒数为 20
# 说明:
依儒略日取得秒数。儒略日的整数部分表示从 1990.01.01 至今的天数,小数部 分表示午夜零点开始至现在时间与一天 24 小时的比值。
2.34 StringToDate
# 语法:
语法 StringToDate("MM/dd/yy") 或: StringToDate("MM/dd/yyyy") 参数 MM——月份* dd——日期* yy——二位数年份 yyyy——四位数年份 注意 *日期时间格式默认是 US 时区的日期时间格式,日期时间格式可以通过 WIN 系统的控制面板中设定地区及语言来设置。
# 示例:
StringToDate("01/01/2008")返回值为 39448.00000000,表示2008/1/1 对应的儒略日。 StringToDate (“04/04/99”)返回值为 36254.00000000,表示1999/4/4 对应的儒略日。
# 说明:
将日期字符串转换成儒略日的格式。日期的格式 为”mm/dd/yy”*或”mm/dd/yyyy”*
2.35 StringToDateTime
# 语法:
语法 StringToDateTime("MM/dd/yy hh:mm:ss tt") 或 StringToDateTime("MM/dd/yyyy hh:mm:ss tt") 参数 MM——月份* dd——日期* yy——二位数年 yyyy——四位数年 hh——小时 mm——分钟 ss——秒数 tt——AM/PM 注意 *日期时间格式默认是 US 时区的日期时间格式,日期时间格式可以通过 WIN 系统的控制面板中设定地区及语言来设置。
# 示例:
StringToDateTime("01/01/2008 08:00:00 AM")返回值为 39448.33333333,表示 2008/1/1,08:00:00AM StringToDateTime("04/04/99 04:48:00 PM")返回值为 36254.70000000,表示 1999/4/4,04:48:00PM
# 说明:
将日期时间字符串转换成儒略日的格式。日期时间字符串格 式为"MM/dd/yy hh:mm:ss tt"* 或 "MM/dd/yyyy hh:mm:ss tt"*
2.36 StringToTime
# 语法:
语法 StringToTime("hh:mm:ss tt") 参数 hh——小时,采用 12 小时制,搭配 AM/PM 使用。 Mm——分钟 ss——秒数 tt——AM/PM 注意 日期时间格式默认是 US 时区的日期时间格式,日期时间格式可以通过WIN系统的控制面板中设定地区及语言来设置。
# 示例:
StringToTime ("08:00:00 AM")返回值为 0.33333333 StringToTime ("04:48:00 PM")返回值为 0.70000000
# 说明:
将时间字符串转换为儒略日的格式。时间字符串格式为 "hh:mm:ss tt"。
2.37 Time_s2Time
# 语法:
语法 Time_s2Time(HHmmss)
参数 HHmmss——数值表达式,要转换的时间。
# 示例:
Time_s2Time(101520)返回值为 1015 Time_s2Time(154548)返回值为 1545
# 说明:
将时间格式由 HHmmss 调整成 HHmm,返回值格式为 24 小 时 HHmm 格式,例如 1300 = 1:00PM。指定时间为 24 小时 制 HHmmss 格式,例如 130000 = 1:00:00PM
2.38 Time2Time_s
# 语法:
语法 Time2Time_s(HHmm)
参数 HHmm——数值表达式,要转换的时间
# 示例:
Time2Time_s(1015) 返回值为 101500 Time2Time_s(1545) 返回值为 154500
# 说明:
将时间格式由 HHmm 调整为 HHmmss,返回值格式为 24 小 时 HHmmss 格式。例如 130000 = 1:00:00PM, 指定时间为 24 小时制 HHmm 格式,例如 1300 = 1:00PM
2.39 TimeToString
# 语法:
语法 TimeToString(儒略日)
参数 儒略日——数值表达式,儒略日格式的时间。
注意 *日期时间格式默认是 US 时区的日期时间格式,日期时间 格式可以通过 WIN 系统的控制面板中设定地区及语言来设 置。
# 示例:
TimeToString(39448.75000000)返回字符串 "6:00 PM"
# 说明:
依儒略日格式的时间转换成字符串。
2.40 YearFromDateTime
# 语法:
语法 YearFromDateTime(儒略日)
参数 儒略日——数值表达式,代表儒略日的日期
# 示例:
YearFromDateTime(39449.25000000)返回值为 2008,表明年份是 2008
# 说明:
依儒略日取得年份。
第三节:总结
EL中有很多是根据儒略日的日期年月时间等表示方式。看起来非常麻烦,难道EL的日期和时间部分是一个天文学家写代码嘛?下面采用标准的整数表示方式,在日常写代码中可以考虑使用,这是一种最符合人们日常习惯的表示方式。
3.1 Date日期的习惯表示方式:
var:Date_(0); value1 = YearFromDateTime(datetime); value2 = MonthFromDateTime(datetime); value3 = dayfromdatetime(datetime); Date_ = YearFromDateTime(datetime)*10000 + MonthFromDateTime(datetime)*100 + dayfromdatetime(datetime); print("========"); print(date); print(value1); print(value2); print(value3); print(Date_); //return { ======== 1200806.00 2020.00 8.00 6.00 20200806.00 ======== 1191202.00 2019.00 12.00 2.00 20191202.00 }
# 说明:从这个例子中我们可以看到,我们把年月日的表示方式习惯的表示成YYYYMMDD的形式,比如1191202表示19年12月2日,可以表示成20191202。这样可以容易理解。因此代码可以精简为:
var:Date_(0);
Date_ = YearFromDateTime(datetime)*10000 + MonthFromDateTime(datetime)*100 + dayfromdatetime(datetime);
这样只需要调用Date_这个变量就能够更加容易的表示日期了。
3.2 小时分钟秒毫秒的表示方式:
在这里我们分两种,第一种为只有小时分钟,也就是小时线以上的表示方式和小时分钟秒分钟线的表示方式,另外我们还添加毫秒的表示方式,主要用于tick基本。因此变量重新定义为。
小时+分钟 = Time_
小时+分钟+秒 = Time_Seconds
小时+分钟+毫秒 = Time_MilliSeconds
Time_ = HoursFromDateTime(datetime)*100 + MinutesFromDateTime(datetime); //返回值: ======== 1500.00 1500.00 ======== 2200.00 2200.00 ======== 2300.00 2300.00 ======== 1000.00 1000.00 ========
Time_seconds = HoursFromDateTime(datetime)*10000 + MinutesFromDateTime(datetime)*100 + SecondsFromDateTime(datetime);
//返回值:
========
44092.96
225900.00
========
44092.96
225915.00
========
44092.96
225930.00
========
44092.96
225945.00
Time_Milliseconds = HoursFromDateTime(datetime)*10000 + MinutesFromDateTime(datetime)*100 + SecondsFromDateTime(datetime) + MillisecondsFromDateTime(datetime)/1000; //返回值: ======== 44092.96 225958.50 500.00 ======== 44092.96 225958.50 500.00
# 3.3 因此根据上面的方式,我们可以封装成两个函数
# 函数1 Date_:
//函数名:Date_ Date_ = YearFromDateTime(datetime)*10000 + MonthFromDateTime(datetime)*100 + dayfromdatetime(datetime); //调用 var:var0(0); var0 = Date_; print(var0); //返回值: 20200904.00 20200904.00 20200904.00 20200904.00 20200904.00 20200904.00 20200907.00 20200907.00 20200907.00 20200907.00 20200907.00 20200907.00
# 函数2:Time_:
当周期为季、年、月,周,时间为HHMMSS = 000000,这里和图表不一致,因为在这三个周期时间是没有用处的。
当周期为小时周期,分钟周期为0,表示为:1000,1400....,分钟周期加入分钟计时,表示为1000,1459...
当周期为秒,表示为:104501....
当周期为tick基本,需要在小数点后面加入tick毫秒,表示为:105959.500
//函数名:Time_ if bartype_ex = 10 or bartype_ex = 7 or bartype = 6 or bartype = 5 then Time_ = 000000; if bartype_ex = 3 or bartype_ex = 2 then Time_ = HoursFromDateTime(datetime)*100 + MinutesFromDateTime(datetime); if bartype_ex = 9 then Time_ = HoursFromDateTime(datetime)*10000 + MinutesFromDateTime(datetime)*100 + SecondsFromDateTime(datetime); if bartype_ex = 1 then Time_ = HoursFromDateTime(datetime)*10000 + MinutesFromDateTime(datetime)*100 + SecondsFromDateTime(datetime) + MillisecondsFromDateTime(datetime)/1000; //调用: var:var0(0); print(Time_); //返回值: 1、季度、年、月、周 0 2、小时、分钟 940.00 945.00 950.00 955.00 1000.00 1005.00 1010.00 3、秒 225035.00 225040.00 225045.00 225050.00 225055.00 225100.00 4、tick 225951.50 225952.50 225953.50 225953.50 225954.50
【总结】:这两个函数不是内建函数,建议生成者在实际工作中直接使用这两个函数即可,这样可以统一成数值形式方便调用,更符合人们的日常习惯,这样也可以提高代码的复用率。
=================================================
之前的文章感谢大家的转载,希望转载时请注明出处,本人转自其它网站的图表一并感谢,谢谢~!
https://www.cnblogs.com/noah0532/