7.1 曰期时间的设定
7.1.1 日期时间变量
在内部设定中, datetime 变量表示自1970 年1 月1 日起的一个秒数的数字。举例而言, 2012 年9 月15 日午夜12 点将是1347667200这个数字。这样的日期时间格式的优点是可以比较过去和未来的时间,且在数学运算上非常容易。
例如,若你想要检查某一个日期和另一个日期的早晚,你可以用一个简单的关系操作数。假设StartDate 设定为2012 年9 月15 日下午2 点, EndDate 设定为2012年9 月15 日上午5 点。其源代码为:

另一个优点是,你可以在一个特定日期上加减时间,方法是加上或减去适当的秒数。若你想要在StartDate 上加上24 小时,只要加上一天的秒数即可。源代码如下:

若你想要运用日期时间变量处理很多数学运算,执行一些整数常数以表示特定时间单位是一个好的做法。源代码如下:

而datetime 格式的缺点是可读性不佳。你无法看到一个数字1347667200而得知其表示2012 年9 月15 日零点。为解决这个问题,我们使用转换函数把日期时间格式和一个更可读的格式进行转换。
7.1.2 日期时间常数
一个日期时间常数是透过下列的字符串格式表示一个日期和时间:
yyyy.mm.dd hh: mm 。例如, 2012 年9 月15 日0 点将是2012.09.15 00:00。也有其他可接受的日期时间常数格式: MQL 参照标题Basics _ Date Types _ Datetime constants 中有更多信息。我们将使用上述的格式,因为这是唯一一个容易转换的格式。要待转换日期时间变量到一个字符串常数,要使用函数TimeToStr( ) ,其语法如下:

参数说明:
• Time一一以秒数表示的日期时间变量,起始于1970 年1 月1 日。
• Output一一一个选择性参数,可选择输出常数为仅有日期、仅有小时和分钟、小时、分钟和秒、或任何日期和时间的结合。有效的输入值为:
• TIME_DATE一一输出日期,例如2012.09.15 。
• TIME_MINUTES一一输出小时和分钟,例如06:30 。
• TIME_SECONDS-一一输出小时、分钟和秒,例如06:30:40 。
若要用预设的yyyy. mm. dd hh: mm 格式输出字符串常数, Output 参数需保持空白。若你只想要日期,或是小时和分钟(或秒) ,需使用适当的自变量。在下面这个例子中,我们将假设StartTime 等于2012.09.15 06:30:40 。

我们可以使用连续字符串建构一个日期时间常数,并使用函数StrToTime ( )将其转换成日期时间变量。语法和上面的TimeToStr( )一样,但没有Output 参数。为转换正确,字符串常数必须是yyyy. mm. dd hh: mm 格式。
下列范例告诉我们如何使用整数组合成一个日期时间常数,可以先转换这些整数为字符串格式,然后转换这些字符串到日期时间变量。首先,我们将执行一些外部变量以设定一个时间和日期:

接着,我们使用StringConcatenate ( )函数创造一个字符串常数,最后用StrToTime( )把字符串转换成dateTime 格式。

注意在StingConcatenate ( )函数中,我们使用Year( )来回传目前的年份,而非使用外部变量。你可以使用函数如Month ( ) , Day ( )以此类推以插入目前的时间值。我们将在下一节探讨这个部分。