热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

获取Elixir的当前日期和时间

如何解决《获取Elixir的当前日期和时间》经验,为你挑选了8个好方法。

这似乎是一个非常愚蠢的问题,但是如何获得并显示Elixir中的当前日期或时间?我试过浏览文档但找不到任何东西.我需要使用Erlang功能吗?



1> bitwalker..:

更具体地回答您的问题(尽管我非常感谢Onorio建议使用Timex!),您可以使用:calendar.universal_time()或从Erlang标准库中获取当前日期和时间:calendar.local_time().datetimecalendar模块中使用Erlang的类型有许多有用的函数,但是它们有些限制,并且没有为解析或格式化日期提供任何东西,这是Timex的用武之地.



2> Jimmar..:

您可以使用DateTime.utc_now/0获取UTC DateTime.


这是Elixir 1.3的正确答案

3> TalkLittle..:

来自Erlang 19.1:

:os.system_time(:millisecond)

来自Erlang 18:

:os.system_time(:milli_seconds)

提供当前UNIX时间戳UTC.

感谢@HenrikN链接博客文章http://michal.muskala.eu/2015/07/30/unix-timestamps-in-elixir.html



4> Sheharyar..:

NaiveDateTime

如果您不关心时区并且只想要纯日期和时间,请使用NaiveDateTime:

NaiveDateTime.utc_now
# => ~N[2017-11-30 20:49:54.660724]

约会时间

如果您还需要时区详细信息,请使用DateTime,这也将返回时区名称,UTC偏移量,STD偏移量和时区缩写等内容:

DateTime.utc_now
# => %DateTime{calendar: Calendar.ISO, day: 30, hour: 20, microsecond: {667345, 6}, minute: 51, month: 11, second: 58, std_offset: 0, time_zone: "Etc/UTC", utc_offset: 0, year: 2017, zone_abbr: "UTC"}

然后,您还可以调用这些模块to_date/1to_time/1从日期时间结构中获取特定的日期和时间值.



5> Onorio Caten..:

我认为你最好的选择是使用Paul Schoenfelder(又名BitWalker)的时间码库来制作Elixir.lib就在这里:https://github.com/bitwalker/timex你可以从hex.pm https://hex.pm/packages/timex获取软件包.Paul很好地解释了如何在该github repo的自述页面上使用该库.

您可以调用本机Erlang库,但我认为Paul的lib在处理Elixir时更胜一筹.


感谢Onorio的推荐!对于任何阅读本文的人,我都非常愿意参与,这样我们就可以让Timex成为Elixir中日期/时间的图书馆,也许有一天将它合并到Elixir标准库中,如果它应该达到标准.如果您有兴趣帮助,请向我发送消息或潜入GitHub上的问题跟踪器并发送拉动请求!

6> Mark Reed..:

这取决于你想要的格式.

您可以使用Elixir的Erlang标准库中的任何函数.传统上,您可以使用该now/0功能获得时间:

iex(1)> :erlang.now
{1487, 549978, 29683}

这代表time_t1,487,549,978.29683,这是2017年2月20日星期一午夜UTC之后19分38.29683秒.

但是,由于Erlang/OTP 18,该函数已被弃用; 其中一个原因是Erlang保证每次调用都会增加返回值.如果在机器上的紧密循环中调用它足够快,每微秒调用一次以上,则返回的时间戳将提前实时.

替换是一种具有更高精度和控制的API.这个新API的主要接口是os:system_time/0函数,它在系统定义的单元中返回纪元时间:

iex(2)> :os.system_time
1487550102372148000

不过,您可以申请特定单位system_time/1:

iex(3)> :os.system_time(:millisecond)
1487549663928

自Elixir 1.2以来,这些功能也可以在本机System模块中使用:

iex(4)> System.system_time(:second)
1487549711

对于更友好但仍然是Elixir原生的界面,使用该calendar模块,它将为您提供元组:

iex(5)> :calendar.universal_time
{{2017, 2, 20}, {0, 26, 47}}

从1.3开始,Elixir也有自己的模块来操作日期和时间:DateDateTime.您可以使用其功能来获取当前日期或时间,如下所示:

iex(6)> Date.utc_today
~D[2017-02-20]
iex(7)> DateTime.utc_now
#DateTime<2017-02-20 00:27:51.776208Z>



7> G Amini..:

您也可以使用:os.timestamp\0,{megaseconds, seconds, microseconds}从UTC 返回.:os.timestamp |> :calendar.now_to_datetime现在将以erlang标准{{YYYY, MM, DD}, {HH, MM, SS}}格式给你.


并将其转换为POSIX/UNIX时间戳:http://michal.muskala.eu/2015/07/30/unix-timestamps-in-elixir.html

8> Lau..:

如果您需要处理夏令时或时区,我为此专门制作了一个库:Calendar。

要获取当前时间,您可以使用例如Calendar.DateTime.now("America/Los_Angeles")洛杉矶Calendar.DateTime.now_utc的当前时间或UTC的当前时间。


推荐阅读
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • 解决Unreal Engine中UMG按钮长时间按住自动释放的问题
    本文探讨了在Unreal Engine中使用UMG按钮时,长时间按住按钮会导致自动释放的问题,并提供了详细的解决方案。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • 四、作为您的 VCS 的 GitHub ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 在命令行环境中,通过输入 `python` 命令进入 Python 交互模式后,用户可能会遇到如何正确退出的问题。本文详细介绍了多种退出 Python 交互模式的方法,包括使用 `exit()` 函数、 `quit()` 函数以及直接输入 `Ctrl+D` 等方式,帮助用户在不同场景下灵活选择合适的退出方法。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • DRF框架中Serializer反序列化验证机制详解:深入探讨Validators的应用与优化
    在DRF框架的反序列化验证机制中,除了基本的字段类型和长度校验外,还常常需要进行更为复杂的条件限制校验。通过引入`validators`模块,可以实现自定义校验逻辑,如唯一字段校验等。本文将详细探讨`validators`的使用方法及其优化策略,帮助开发者更好地理解和应用这一重要功能。 ... [详细]
author-avatar
吟伶逸慧喜靖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有