• 量化投资_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/

  • 相关阅读:
    怎样确定需求
    xampp进程和非进程执行
    将博客搬至CSDN
    管理心得
    数据库性能优化
    开发、架构总结
    activeMQ总结
    php数组操作函数
    Examples_08_08
    保险采购单的修复
  • 原文地址:https://www.cnblogs.com/noah0532/p/13694134.html
Copyright © 2020-2023  润新知