量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第十四章日期和时间】

第十四章:日期和时间

第一节:计时方式

   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

# 示例

若电脑日期时间为 200811 日上午 6:00,
对应的 ComputerDateTime 返回值为 39448.25000000

# 说明

  返回当前电脑日期时间的儒略日值。 整数部分是儒略日日期,小数部分为儒略日时间。

 

2.2 CurrentDate(EL标准)

# 语法

语法 CurrentDate

# 示例

如果电脑日期为 20081030 日,则 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) 表示指定日期为 200811 日,
返回值 39448
DateToJulian (990402) 表示指定日期为 199942 日,
返回值 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,表示 20081 月的第一天。
DayOfMonth(990605) 返回值为 5,表示 19996 月的第五天。

# 说明

  返回指定的 ELDate 格式日期所对应的日期(当月的第几 天)。 指定日期格式为 YYYMMdd,Y YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。

 

2.12 DayOfWeek(EL标准)

# 语法

语法 DayOfWeek(YYYMMdd)
参数 YYYMMdd——数值表达式,表示 YYYMMdd 格式的日期。

# 示例

DayOfWeek(1080101) 返回值为 2,表示 200811 日是星期二。
DayOfWeek(990603) 返回值为 4,表示 199963 日是星期四。

# 说明

  根据指定 ELDate 格式日期取得当天为该周第几天的数值。 如 0=星期天,1=星期一,依次类推。 指定日期格式为 YYYMMdd,YYY 表示自 1900 至今的年份, MM 表示月,dd 表示日。

 

2.13 DayOfWeekFromDateTime(儒略日)

# 语法

语法 DayOfWeekFromDateTime(儒略日)
参数 儒略日——数值表达式,表示儒略日格式日期。

# 示例

DayOfWeekFromDateTime(39448.25000000) 返回值为 2,表示 200811 日是星期二。

# 说明

  依儒略日的日期取得当天为该周第几天的数值。如 0=星期 天,1=星期一,以此类推。

 

2.14 El_DateStr(EL标准)

# 语法

语法 El_DateStr(dd, MM,YYYY)
参数
dd——数值表达式,指定天。
MM——数值表达式,指定月。
YYYY——数值表达式,指定年。

# 示例

El_DateStr(02,04,2008) 会返回字符串 "20080402",相当于2008 年 42 日。

# 说明

  返回值为 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,对应指定日期为 200811 日。

# 说明

  返回指定日期对应的儒略历日期。

 

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.350000008: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.354400008: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/

posted @ 2020-09-19 00:59  时海涛|Thomas  阅读(1071)  评论(0编辑  收藏  举报