Date 在prolog中处理日期
如何制作一个程序,在其中插入一个日期,然后再添加几天(假设+20天)以获得一个新的日期 例如:Date 在prolog中处理日期,date,datetime,prolog,stamp,Date,Datetime,Prolog,Stamp,如何制作一个程序,在其中插入一个日期,然后再添加几天(假设+20天)以获得一个新的日期 例如: ?- write a date in this format(YYYY-MM-DD.): 2020-01-15. The new date is : 2020-02-04 我认为我应该使用这个预定义的谓词:日期时间戳、日期时间戳和日期时间值,但我没有成功地管理它 我发现以下代码: goes :- write('Please enter your birthday [YYYY-MM-DD]')
?- write a date in this format(YYYY-MM-DD.): 2020-01-15.
The new date is : 2020-02-04
我认为我应该使用这个预定义的谓词:日期时间戳、日期时间戳和日期时间值,但我没有成功地管理它
我发现以下代码:
goes :-
write('Please enter your birthday [YYYY-MM-DD]'),
nl,
read_string(Birthday),
parse_time(Birthday, Stamp),
stamp_date_time(Stamp, DateTime, 'UTC'),
DateTime = date(Year, Month, Day, _, _, _, _, _, _),
print('Year: '), print(Year), nl,
print('Month: '), print(Month), nl,
print('Day: '), print(Day), nl.
read_string(String) :-
current_input(Input),
read_line_to_codes(Input, Codes),
string_codes(String, Codes).
得到这个:
?- goes.
Please enter your birthday [YYYY-MM-DD] |: 2010-07-05.
false.
构建模块都在那里:
?-日期时间戳(日期(2020,4,15,0,0,0,关闭,TZ,DST),时间戳)。
关=-7200,
TZ=‘CEST’,
DST=真,
时间戳=1586901600.0。
?-NDays=20,接下来是$TimeStamp+60*60*24*NDays。
NDays=20,
Next=1588629600.0,
时间戳=1586901600.0。
?盖章日期时间($Next、DT、local)。
DT=日期(2020年5月5日0月0日0.0日-7200日,CEST,真实),
Next=1588629600.0。
符号$TimeStamp
是REPL(即交互式解释器)的SWI Prolog便捷功能,它为我们提供变量TimeStamp
绑定的最后一个值
显然,最好将复杂性封装在自己的应用程序界面中
文档还提示了另一种方法,只需将天数添加到date/9结构的day字段中,即可获得适当的时间戳
那么整个可能是:
将:-
写入('将日期输入为'YYYY-MM-DD.`:'),
读取(YYYY-MM-DD),
D1为DD+20,
日期时间戳(日期(YYYY,MM,D1,0,0,0,u,u,u,u),戳),
盖章日期时间(盖章、D、本地),
日期时间值(日期,D,DV),
格式('结果日期:~w',[DV])。
构建块都在那里:
?-日期时间戳(日期(2020,4,15,0,0,0,关闭,TZ,DST),时间戳)。
关=-7200,
TZ=‘CEST’,
DST=真,
时间戳=1586901600.0。
?-NDays=20,接下来是$TimeStamp+60*60*24*NDays。
NDays=20,
Next=1588629600.0,
时间戳=1586901600.0。
?盖章日期时间($Next、DT、local)。
DT=日期(2020年5月5日0月0日0.0日-7200日,CEST,真实),
Next=1588629600.0。
符号$TimeStamp
是REPL(即交互式解释器)的SWI Prolog便捷功能,它为我们提供变量TimeStamp
绑定的最后一个值
显然,最好将复杂性封装在自己的应用程序界面中
文档还提示了另一种方法,只需将天数添加到date/9结构的day字段中,即可获得适当的时间戳
那么整个可能是:
将:-
写入('将日期输入为'YYYY-MM-DD.`:'),
读取(YYYY-MM-DD),
D1为DD+20,
日期时间戳(日期(YYYY,MM,D1,0,0,0,u,u,u,u),戳),
盖章日期时间(盖章、D、本地),
日期时间值(日期,D,DV),
格式('结果日期:~w',[DV])。
你能展示一下你的尝试并解释一下它的缺点吗?我发现下面的代码:goes:-写(“请输入你的生日[YYYY-MM-DD]”),nl,读字符串(生日),解析时间(生日,邮票),邮票日期时间(邮票,日期时间,'UTC'),日期时间=日期(年,月,日,年),打印(年),nl,打印('Month:'),打印(Month),nl,打印('Day:'),打印(Day),nl。读取字符串(字符串):-当前输入(输入),读取行到代码(输入,代码),字符串代码(字符串,代码)。得到这个:?-开始。请输入您的生日[YYYY-MM-DD]|:2010-07-05。错误。您使用的Prolog的哪个版本具有这些预定义谓词?@CalinBorzin-请不要在注释中添加代码。那里几乎没有用。编辑你的问题(就像我做的那样)。@CalinBorzin-哪个谓词导致你的程序失败?你能展示一下你的尝试并解释它是如何失败的吗?我发现下面的代码:goes:-写('请输入你的生日[YYYY-MM-DD]')、nl、读字符串(生日)、解析时间(生日,戳记)、戳记日期时间(戳记,日期时间,'UTC'),DateTime=日期(年、月、日、日、打印('Year:')、打印(Year)、nl、打印('Month:')、打印(Month)、nl、打印('Day:')、打印(Day:')、打印(Day)、nl。读取字符串(字符串):-当前输入(输入),读取行到代码(输入,代码),字符串代码(字符串,代码)。得到这个:?-开始。请输入您的生日[YYYY-MM-DD]|:2010-07-05。错误。您使用的Prolog的哪个版本具有这些预定义谓词?@CalinBorzin-请不要在注释中添加代码。那里几乎没有用。编辑你的问题(和我一样)。@CalinBorzin-哪个谓词导致你的程序失败?