Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 使用当地时间';生成时间戳宏_Date_Macros_Common Lisp - Fatal编程技术网

Date 使用当地时间';生成时间戳宏

Date 使用当地时间';生成时间戳宏,date,macros,common-lisp,Date,Macros,Common Lisp,我是CommonLisp的初学者,目前正在试用该软件包 我试图用maketimestamp宏创建一个日期,该宏创建timestamp的实例。我咨询了专家,但我不明白我必须提供哪些论据 宏的描述如下所示: -宏:生成时间戳和键:天:秒:nsec 扩展为一个表达式,该表达式完全按照指定创建时间戳的实例 只需使用不带任何参数的宏即可实现这一点: LOCAL-TIME> (make-timestamp) @2000-03-01T01:00:00.000000+01:00 2000-03-01是这

我是CommonLisp的初学者,目前正在试用该软件包

我试图用
maketimestamp
宏创建一个日期,该宏创建
timestamp
的实例。我咨询了专家,但我不明白我必须提供哪些论据

宏的描述如下所示:

-宏:生成时间戳和键:天:秒:nsec

扩展为一个表达式,该表达式完全按照指定创建时间戳的实例

只需使用不带任何参数的宏即可实现这一点:

LOCAL-TIME> (make-timestamp)
@2000-03-01T01:00:00.000000+01:00
2000-03-01是这里的标准纪元,所以到目前为止似乎还可以

:第3天作为参数传递给我:

LOCAL-TIME> (make-timestamp :day 3)
@2000-03-04T01:00:00.000000+01:00
好的。但是,我如何从这一点构建一个日期,而不必计算从2000-03-01到未来的天数

还有一个名为
encode timestamp
的函数,它似乎完全按照我的要求执行(即:通过提供诸如月日、月、年、小时、分钟等信息来创建日期):


但是,
make timestamp
宏应该做什么呢?

make timestamp
被几个编码函数使用,包括
encode timestamp
。我认为它相当低级,但它可能会引起图书馆用户的兴趣


Encode timestamp
似乎正是您想要的功能。

#“make-timestamp
毫无意义
#'
是函数的前缀。宏名为just
make-timestamp
make-timestamp
只是
上的语法糖(make-instance'timestamp…
。具体来说,
#'make-timestamp
(函数make-timestamp)
,并且“在表示宏或特殊形式的符号上使用函数是错误的。”请看@RainerJoswig,既然它扩展到了什么,而且它看起来像一个函数,我想知道为什么它被定义为一个宏而不是一个函数(或者一个函数和一个相关的编译器宏)@JoshuaTaylor:通常用于那些在所有情况下都不支持显式内联的实现。有一些……非常感谢您的回答。那么我将使用
encode timestamp
LOCAL-TIME> (encode-timestamp 0 0 30 10 13 5 2009)
@2009-05-13T10:30:00.000000+02:00