Ruby 日期和时间(和 Python3 日期和时间对比)

Ruby 日期和时间(和 Python3 日期和时间对比)

生成当前时间

# Ruby
[12] pry(main)> Time.now
=> 2020-08-27 22:41:45.142628288 +0800
[13] pry(main)> Time.now.to_s
=> "2020-08-27 22:43:46 +0800"

# Python3

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2020, 8, 27, 22, 42, 17, 965778)
>>> str(datetime.datetime.now())
'2020-08-27 22:43:40.267643'

生成 Unix 时间
# Ruby

[2] pry(main)> Time.new.to_i
=> 1599919407

# Python3

>>> import time
>>> time.time()
1599919411.7425907

生成指定时间

# Ruby

复制代码
[8] pry(main)> Time.mktime(2013, 5, 30, 3, 11, 12)
=> 2013-05-30 03:11:12 +0800

[56] pry(main)> st
=> "2017-11-23 16:10:10"
[57] pry(main)> datetime = DateTime.strptime(st, "%Y-%m-%d %H:%M:%S")
=> #<DateTime: 2017-11-23T16:10:10+00:00 ((2458081j,58210s,0n),+0s,2299161j)>

[58] pry(main)> start_time = Time.new.strftime('%Y-%m-%d %H:%M:%S')
=> "2020-11-04 11:15:32"
[59] pry(main)> require 'time'
=> true
[60] pry(main)> Time.parse(start_time)
=> 2020-11-04 11:15:32 +0800
复制代码

 

# Python3

复制代码
>>> import time
>>> import datetime
>>> secs = time.mktime((2013, 5, 30, 3, 11, 12, 0, 0, 0))
>>> time.asctime(time.localtime(secs))
'Thu May 30 03:11:12 2013'

>>> st = "2017-11-23 16:10:10"
>>> datetime.datetime.strptime(st, "%Y-%m-%d %H:%M:%S")
datetime.datetime(2017, 11, 23, 16, 10, 10)
复制代码

Time

# Ruby

复制代码
[15] pry(main)> Time.new.year
=> 2020
[16] pry(main)> Time.new.month
=> 8
[18] pry(main)> Time.new.day
=> 27
[19] pry(main)> Time.new.wday
=> 4
[20] pry(main)> Time.new.yday
=> 240
[21] pry(main)> Time.new.hour
=> 22
[22] pry(main)> Time.new.min
=> 47
[23] pry(main)> Time.new.sec
=> 11
[24] pry(main)> Time.new.usec
=> 229665
[25] pry(main)> Time.new.zone
=> "CST"
复制代码

# Python3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> datetime.datetime.now().year
2020
>>> datetime.datetime.now().month
8
>>> datetime.datetime.now().day
27
>>> datetime.datetime.now().hour
22
>>> datetime.datetime.now().min
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime.datetime.now().minute
50
>>> datetime.datetime.now().second
26
>>> datetime.datetime.now().microsecond
11814

Date
# Ruby

复制代码
[14] pry(main)> require 'date'
=> false
[15] pry(main)> d = Date.today
=> #<Date: 2020-09-12 ((2459105j,0s,0n),+0s,2299161j)>
[17] pry(main)> d.to_s
=> "2020-09-12"
[18] pry(main)> d.year
=> 2020
[19] pry(main)> d.month
=> 9
[20] pry(main)> d.day
=> 12
[21] pry(main)> d.wday
=> 6
[22] pry(main)> d.mday
=> 12
[23] pry(main)> d.yday
=> 256

[24] pry(main)> d = Date.new(2013, 1, 4)
=> #<Date: 2013-01-04 ((2456297j,0s,0n),+0s,2299161j)>
[25] pry(main)> d.to_s
=> "2013-01-04"
复制代码

# Python3

复制代码
>>> import datetime
>>> d = datetime.date.today()
>>> d
datetime.date(2020, 9, 12)
>>> str(d)
'2020-09-12'
>>> d.year
2020
>>> d.month
9
>>> d.day
12

>>> d = datetime.date(2013, 1, 4)
>>> d
datetime.date(2013, 1, 4)
>>> str(d)
'2013-01-04'
复制代码

格式化时间和日期
# Ruby

[29] pry(main)> Time.new.strftime("%Y-%m-%d %H:%M:%S")
=> "2020-08-27 22:54:27"

# Python3

>>> import datetime
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2020-08-27 22:54:56

Time 运算
# Ruby

复制代码
[36] pry(main)> now = Time.now
=> 2020-08-27 23:04:08.084837357 +0800
[37] pry(main)> past = now - 10
=> 2020-08-27 23:03:58.084837357 +0800
[38] pry(main)> future = now + 10
=> 2020-08-27 23:04:18.084837357 +0800
[39] pry(main)> diff = future - now
=> 10.0

[49] pry(main)> now = Time.now
=> 2020-08-27 23:25:33.698087266 +0800
[50] pry(main)> yesterday = Time.now - 24 * 60 * 60
=> 2020-08-26 23:25:36.10994221 +0800
[51] pry(main)> tomorrow = Time.now + 24 * 60 * 60
=> 2020-08-28 23:26:13.34698554 +0800
复制代码

# Python3

复制代码
>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2020, 8, 27, 23, 13, 24, 681122)
>>> ten_seconds = datetime.timedelta(seconds=10)
>>> ten_seconds
datetime.timedelta(0, 10)
>>> past = now - ten_second
>>> past
datetime.datetime(2020, 8, 27, 23, 13, 14, 681122)
>>> future = now + ten_second
>>> future
datetime.datetime(2020, 8, 27, 23, 13, 34, 681122)
>>> diff = future - now
>>> diff
datetime.timedelta(0, 10)

>>> datetime.date.today()
datetime.date(2020, 8, 27)
>>> yesterday = datetime.date.today() + datetime.timedelta(days=-1)
>>> yesterday
datetime.date(2020, 8, 26)
>>> tomorrow = datetime.date.today() + datetime.timedelta(days=1)
>>> tomorrow
datetime.date(2020, 8, 28)
复制代码

Date 运算

# Ruby

复制代码
[1] pry(main)> require 'date'
=> true
[2] pry(main)> d1 = Date.new(2013, 1, 1)
=> #<Date: 2013-01-01 ((2456294j,0s,0n),+0s,2299161j)>
[3] pry(main)> d2 = Date.new(2013, 1, 4)
=> #<Date: 2013-01-04 ((2456297j,0s,0n),+0s,2299161j)>
[4] pry(main)> d2 -d1
=> (3/1)
[10] pry(main)> d = Date.today
=> #<Date: 2020-09-12 ((2459105j,0s,0n),+0s,2299161j)>
[11] pry(main)> d + 1
=> #<Date: 2020-09-13 ((2459106j,0s,0n),+0s,2299161j)>
[12] pry(main)> d + 100
=> #<Date: 2020-12-21 ((2459205j,0s,0n),+0s,2299161j)>
[13] pry(main)> d - 1
=> #<Date: 2020-09-11 ((2459104j,0s,0n),+0s,2299161j)>
[14] pry(main)> d - 100
=> #<Date: 2020-06-04 ((2459005j,0s,0n),+0s,2299161j)>

[15] pry(main)> d >> 1
=> #<Date: 2020-10-12 ((2459135j,0s,0n),+0s,2299161j)>
[16] pry(main)> d >> 100
=> #<Date: 2029-01-12 ((2462149j,0s,0n),+0s,2299161j)>
[17] pry(main)> d << 1
=> #<Date: 2020-08-12 ((2459074j,0s,0n),+0s,2299161j)>
[18] pry(main)> d << 100
=> #<Date: 2012-05-12 ((2456060j,0s,0n),+0s,2299161j)>
复制代码

# Python3

复制代码
>>> import datetime
>>> d = datetime.date.today()
>>> d
datetime.date(2020, 9, 12)
>>> d + datetime.timedelta(days=1)
datetime.date(2020, 9, 13)
>>> d + datetime.timedelta(days=100)
datetime.date(2020, 12, 21)
>>> d + datetime.timedelta(days=-1)
datetime.date(2020, 9, 11)
>>> d + datetime.timedelta(days=-100)
datetime.date(2020, 6, 4)
复制代码

————————————————

版权声明:本文为CSDN博主「Looooking」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/TomorrowAndTuture/article/details/108270142

posted @   unicornsir  阅读(74)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示