gpt4 book ai didi

prolog - 如何在 Prolog 中以数字形式获取当前系统年份

转载 作者:行者123 更新时间:2023-12-04 06:55:02 25 4
gpt4 key购买 nike

如何在序言中获取当前系统年份作为数字。
我找到了这个。
但它以字符串形式给出年份。

today(Today) :- get_time(X), format_time(atom(Today), '%Y', X).

谢谢。

最佳答案

正如 mbratch 在对我的回答的评论中指出的那样,format_time/3用于显示日期和时间值。如果我只需要数据,我不会使用 format_time/3 ,而是stamp_date_time/3date_time_value/3将时间戳转换为您需要的值。相关谓词的文档可以在 here 中找到.

要获得当前年份,这样的谓词就足够了:

year(Year) :-
get_time(Stamp),
stamp_date_time(Stamp, DateTime, local),
date_time_value(year, DateTime, Year).

以下是使用的内置谓词的描述:
  • get_time/2给出一个浮点数,表示自 Unix Epoch 以来耗时.
  • stamp_date_time/3将戳记转换为术语 date/9 ,根据第三个参数指示的时区。当时区参数为 local 时它获取您的系统在本地的时区。 date/9 的示例:

    日期(2014, 3, 29, 8, 8, 59.30211305618286, 21600, 'MDT', true)
  • date_time_value/3 : 让您从 date/9 中提取值术语(所以你不必做一些愚蠢的事情,比如 date(Year,_,_,_,_,_,_,_,_) 来获得一个简单的值)。

  • 您的问题询问年份,但您的示例谓词看起来像描述今天的日期,看起来像这样:
    today(Today) :-
    get_time(Stamp),
    stamp_date_time(Stamp, DateTime, local),
    date_time_value(date, DateTime, Today).

    date关键字, date_time_value/3将实例化 Today一个词 date/3 ,保存年、月、日:例如, date(2014, 3, 29) .

    真的,库需要三个语句来获得一个共同的日期时间值,这有点傻,所以如果你经常处理时间和日期,你可能只想使用一个通用的谓词,比如
    get_date_time_value(Key, Value) :-
    get_time(Stamp),
    stamp_date_time(Stamp, DateTime, local),
    date_time_value(Key, DateTime, Value).

    它将返回与给定 Key 对应的当前数值:
    ?- get_date_time_value(day, X).
    X = 29.

    ?- get_date_time_value(year, X).
    X = 2014.

    ?- get_date_time_value(date, X).
    X = date(2014, 3, 29).

    关于prolog - 如何在 Prolog 中以数字形式获取当前系统年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22731856/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com