Julia 日期和时间学习笔记
本文介绍了使用Julia编程语言处理日期和时间的基础知识和实用技巧。
Julia中的日期类型
Julia中有两种日期类型:Date
和DateTime
。Date
类型表示具体的日期,包括年、月、日;而DateTime
类型除了包含日期信息外,还包含了具体的时间信息,包括时、分、秒和毫秒等。
Date类型
创建一个Date
对象的方法如下:
Copy Codejulia> using Dates
julia> date(2023, 6, 3)
2023-06-03
date
函数的三个参数分别表示年、月、日。
Date
对象支持基本的算术和比较运算符,比如:
Copy Codejulia> 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 Codejulia> d1 + Week(1)
2023-06-10
DateTime类型
创建一个DateTime
对象的方法如下:
Copy Codejulia> datetime(2023, 6, 3, 10, 5, 49)
2023-06-03T10:05:49
datetime
函数的前六个参数分别表示年、月、日、时、分和秒。
DateTime
对象也支持基本的算术和比较运算符,例如:
Copy Codejulia> 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 Codejulia> time()
1.622880549e9
时间戳是一个浮点数,表示自1970年1月1日以来经过的秒数。可以通过DateTime
类型的构造函数将时间戳转换为DateTime
对象:
Copy Codejulia> 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 Codejulia> 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 Codejulia> 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 Codejulia> 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 Codejulia> 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"
这样就将时间戳格式化为了一个人类可读的字符串。