程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Python日期时间模块

发布于2020-02-25 12:32     阅读(889)     评论(0)     点赞(2)     收藏(5)


1.日期时间模块

  • datetime:日期
  • time:时间
  • calendar:日历
  • 时间间隔是以秒为单位
  • 每个时间戳都以自从1970.1.1经历了多长时间计算的
  • 时间戳:当前时间距离1970.1.1的秒数

2.time时间模块

  • UTC:格林威治天文时间,世界标准时间,中国UTC+8
  • DST:夏令时
    在这里插入图片描述
import time

# 获取当前时间的时间戳
T = time.time()
print(T)                  # 时间的第一种表示形式,时间戳:1582527576.3493447

# 将上述时间戳 → 时间元组
g = time.gmtime(T)
print(g)
'''
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=24, tm_hour=7, tm_min=14, tm_sec=54, tm_wday=0, tm_yday=55, tm_isdst=0)
'''

# 将时间戳 → 时间元组(本地时间)
l = time.localtime(T)
print(l)
'''
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=24, tm_hour=15, tm_min=16, tm_sec=50, tm_wday=0, tm_yday=55, tm_isdst=0)
'''

# 将时间元组 → 时间戳
c = time.mktime(l)
print(c)               # 输出:1582528788.

c1 = time.mktime((2020,2,24,14,16,50,0,55,0))
print(c1)              # 输出:1582525010.0

# 将时间戳 → 字符串
c2 = time.ctime(T)
print(c2)              # 输出:Mon Feb 24 15:21:38 2020

# 将时间元组 → 格式化字符串
# 注意:必须严格按照格式化形式书写字符串【严格区分大小写】
s = time.strftime("%Y-%m-%d %H:%M:%S",l)
print(s)                # 输出:2020-02-24 15:23:59

# (7)可视化时间(定制) → 时间元祖
# time.strptime(时间字符串,时间格式)
print(time.strptime('2018-9-30 11:32:23', '%Y-%m-%d %H:%M:%S'))


# 休眠【暂停】
# 参数的单位为秒
time.sleep(5)          # 程序休眠5S
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

2.2 练习:假如我有一个时间字符串,然后向得到这个字符串所对应时间3天之后得时间

import time
# 2017.5.7
time1 = "2017-5-7"

# 将时间  → 时间元组
p1 = time.strptime(time1, '%Y-%m-%d')

# 时间元组  → 时间戳
t1 = time.mktime(p1)
t3 = t1 + 3 *24 * 3600

# 时间戳  → 格式化时间
f = time.strftime("%Y.%m.%d",time.localtime(t3))
print(f)          # 输出:2017.05.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.datetime日期模块

  • datetime比time更加高级,对time进行封装
import datetime

# 获取当前是加你
d1 = datetime.datetime.now()
print(d1)                           # 输出:2020-02-24 16:00:20.697714

# 获取指定时间
d2 = datetime.datetime(2020,2,24,16,0,32,3623)
print(d2)                           # 输出:2020-02-24 16:00:32.003623

# 将指定时间转换为字符串
d4 = d1.strftime("%Y-%m-%d")
print(d4)                           # 输出:2020-02-24
print(type(d4))                     # 输出:<class 'str'>

d5 = datetime.datetime.strptime(d4,"%Y-%m-%d")
print(d5)                          # 输出:2020-02-24 00:00:00

# 两个时间详见,可以得到时间间隔
d6 = datetime.datetime(2018,4,2,10,56,00,3623)
d7 = datetime.datetime(2018,4,5,10,56,32,3623)
d8 = d7 - d6
print(d8)                           # 输出:3 days, 0:00:32
print(d8.days)                      # 输出:3
print(d8.seconds)                   # 输出:32 整天之外得秒数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

4.timedelta

  • datetime.timedelta对象代表两个时间之间的时间差,两个date或datetime对象相减就可以返回一个timedalta对象
  • timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
import datetime

t1 = datetime.datetime.now()
t2 = datetime.timedelta(days=1)
result = t1 + t2                 # 获取一天后的时间
print(result)                    # 输出:2020-02-25 16:19:52.314417
result = t1 - t2                 # 获取前一天的时间
print(result)                    # 输出:2020-02-23 16:19:52.314417
print(t2.total_seconds())        # 获取总秒数86400.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.calendar日历模块

  • 主要用于获取日历相关信息``
import calendar

# 直接返回指定年和月的万年历表示形式
print(calendar.month(2020,2))
'''
输出:
   February 2020
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29
'''

# 返回万年历的二维列表表示形式
print(calendar.monthcalendar(2020,2))
'''
输出:
[[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 0]]
'''

# 直接返回指定年份的万年历表示形式
print(calendar.calendar(2020))
'''
输出:
                                  2020

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2                         1
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
                                                    30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7
 6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
27 28 29 30               25 26 27 28 29 30 31      29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2          1  2  3  4  5  6
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       7  8  9 10 11 12 13
13 14 15 16 17 18 19      10 11 12 13 14 15 16      14 15 16 17 18 19 20
20 21 22 23 24 25 26      17 18 19 20 21 22 23      21 22 23 24 25 26 27
27 28 29 30 31            24 25 26 27 28 29 30      28 29 30
                          31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1          1  2  3  4  5  6
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
                          30
'''

# 判断是否为闰年
print(calendar.isleap(2020))              # 输出:True
print(calendar.leapdays(2000,2020))       #5

# 返回指定月的weekday的第一天和这个月的所有的天数
print(calendar.monthrange(2020,2))
'''
输出:(5, 29) 表示当月开始第一天为星期五,这个月有29天
'''

# 当前日期表示的星期数
print(calendar.weekday(2020,2,2))           # 输出6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
发布了15 篇原创文章 · 获赞 2 · 访问量 1665


所属网站分类: 技术文章 > 博客

作者:sdhjsdh

链接:https://www.pythonheidong.com/blog/article/233243/326bd3fb3b641e683afa/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)