Julia 日期和时间学习笔记

本文介绍了使用Julia编程语言处理日期和时间的基础知识和实用技巧。

Julia中的日期类型

Julia中有两种日期类型:DateDateTimeDate类型表示具体的日期,包括年、月、日;而DateTime类型除了包含日期信息外,还包含了具体的时间信息,包括时、分、秒和毫秒等。

Date类型

创建一个Date对象的方法如下:

Copy Code
julia> using Dates julia> date(2023, 6, 3) 2023-06-03

date函数的三个参数分别表示年、月、日。

Date对象支持基本的算术和比较运算符,比如:

Copy Code
julia> d1 = date(2023, 6, 3) 2023-06-03 julia> d2 = date(2023, 6, 4) 2023-06-04 julia> d2 - d1 Day(1) julia> d2 > d1 true

在Julia中,天数的加减可以通过加减整数来实现。例如,要将某个日期往后推一周,可以这样写:

Copy Code
julia> d1 + Week(1) 2023-06-10

DateTime类型

创建一个DateTime对象的方法如下:

Copy Code
julia> datetime(2023, 6, 3, 10, 5, 49) 2023-06-03T10:05:49

datetime函数的前六个参数分别表示年、月、日、时、分和秒。

DateTime对象也支持基本的算术和比较运算符,例如:

Copy Code
julia> dt1 = datetime(2023, 6, 3, 10, 5, 49) 2023-06-03T10:05:49 julia> dt2 = datetime(2023, 6, 3, 11, 5, 49) 2023-06-03T11:05:49 julia> dt2 - dt1 Hour(1) julia> dt2 > dt1 true

时间戳

Julia中可以使用time()函数获取当前时间的时间戳:

Copy Code
julia> time() 1.622880549e9

时间戳是一个浮点数,表示自1970年1月1日以来经过的秒数。可以通过DateTime类型的构造函数将时间戳转换为DateTime对象:

Copy Code
julia> datetime(1.622880549e9) 2021-06-15T02:51:29

Julia中的日期和时间格式化

在Julia中,可以使用strftime函数将日期和时间格式化为字符串。下面是一些常用的格式化字符串:

  • %Y:年份,四位数,比如2021
  • %m:月份,两位数,比如02
  • %d:日期,两位数,比如15
  • %H:小时,24小时制,两位数,比如09
  • %M:分钟,两位数,比如25
  • %S:秒,两位数,比如30

例如,将当前日期时间格式化为字符串:

Copy Code
julia> dt = now() 2023-06-03T10:05:49.810 julia> strftime("%Y-%m-%d %H:%M:%S", dt) "2023-06-03 10:05:49"

还有其它很多自定义的格式化字符串,可以参考Julia官方文档中的说明。

Julia中的日期和时间实例

实例1:计算两个日期之间相差的天数

假设现在是2023年6月3日,我们想知道还有多少天才到下一个新年:

juliaCopy Code
julia> d1 = date(2023, 6, 3) 2023-06-03 julia> d2 = date(2024, 1, 1) 2024-01-01 julia> d2 - d1 Day(212)

所以距离下一个新年还有212天。

实例2:计算某个时间点到当前时间的时间差

假设某个事件是在2023年6月1日9点13分发生的,现在时间是2023年6月3日10点5分,我们想知道这个事件距离现在有多长时间:

juliaCopy Code
julia> dt1 = datetime(2023, 6, 1, 9, 13, 0) 2023-06-01T09:13:00 julia> dt2 = now() 2023-06-03T10:05:49.810 julia> dt2 - dt1 Day(2), Hour(0), Minute(52), Second(49)

所以距离事件发生已经过去了2天、52分钟和49秒。

实例3:将时间戳格式化为字符串

假设我们有一个时间戳,想将其格式化为字符串:

juliaCopy Code
julia> ts = time() 1.622880549e9 julia> dt = datetime(ts) 2021-06-15T02:51:29 julia> strftime("%Y-%m-%d %H:%M:%S", dt) "2021-06-15 02:51:29"

这样就将时间戳格式化为了一个人类可读的字符串。