Python--time, datetime库常用方法

本文概览

  1. 主要介绍time 时间库的使用,time 库是一个python 内置库,无需安装即可使用
  2. datetime 库 封装了time库的一些使用,更加方便
  3. 时间的处理在很多地方都有使用,算是比较基础的库

本文目录

  1. 时间的一些基础知识
  2. 时间的不同表现方式
  3. time datetime库的处理方法
  4. 时间处理的常见需求

时间的一些基础知识

  1. 现在的时间使用原子钟的方式计时,主要原理是根据一些特殊原子在不同能量层级之间运动时的固定周期确定时间的,详情可参看视频 石英钟和原子钟的工作原理
  2. 由于地球是一个球体,古代的时间都是根据地球转动时太阳的位置进行确定的,古代的国家比较小,之间的信息交流远没有如今发达,也就感觉不到地理位置对于时间的影响
  3. 以前为了确定时间,英国格林尼治有一个天文台,上面有一个沟槽,当太阳经过这个沟槽的时候,就是中午12点,由于当时英国是日不落帝国,所以英国把这种时间推行方式带到了全世界,被称为 GMT 时间
  4. 后来科技发展,用这种格林尼治时间误差比较大,且无法平衡世界各地的时间差,又诞生了协调世界时,协调世界时是基于原子钟的计时方式,是平衡国际原子时和地球自转世界时两者的差异,称为 UTC 时间,详情请看视频 一秒钟有多长
  5. 由于地理位置上,中国大部分地区都在东八区,每15经度加一个小时,所以比UTC时间快了 8 小时,我们使用的时间是北京时间也就是 UTC 时间 + 8 小时
  6. 1958年1月1日0时0分0秒确定为国际原子时的开始,以秒为单位
  7. Unix 系统中是从1970年1月1日0时0分0秒开始计算的,称为时间戳

时间的不同表现方式

1. 时间戳

  1. 时间戳,是一个浮点数,一般精确到小数点后7位, 1563201428.534667
  2. 由于UNIX 系统出现的早,影响力也很大,在操作系统,编程语言都习惯性的使用UNIX的时间戳作为时间,也就是 1970年1月1日0时0分0秒开始计算的
    1. 计算机就算关机了,开机后没联网时间也是对的,这是因为电脑主板上有一块电池,关机时,电池会继续供电给计时装置,保证时间的准确
    2. 联网后,计算机会自动校对时间

2. 格式化时间(结构化时间)

  1. 格式化时间,是一种时间类型(对象),包含了年月日时分秒毫秒等信息

3. 字符串时间

  1. 以一定形式将格式化时间转化为字符串,易于看懂,如 2018/11/11 00:00:00Mon Jul 15 22:30:02 2019

以上三者都可以相互转化,这三种方式各有用处

time datetime库的处理方法

详细文章

  1. 三种格式的时间表示
    	time.time()  #1563201428.534667
    	time.localtime()   # time.struct_time(tm_year=2019, tm_mon=7, tm_mday=15, tm_hour=22, tm_min=39, tm_sec=27, tm_wday=0, tm_yday=196, tm_isdst=0)
    	time.strftime("%Y/%m/%d %H:%M:%S", time.localtime())  # 2019/07/15 00:00:00
    
  2. 格式化时间 转 字符串时间

    time.strftime(format, struct_time)

    	format 是格式模板,按照一定方式排列字符串可以得到相应的结果 		
    
  3. 时间戳转格式化时间

    time.gmtime(float)
    time.localtime(float)

    	time.time() # 返回的是时间戳
    	time.gmtime(time.time())  # 返回的是格林尼治时间,比北京时间要晚 8 小时
    	# time.struct_time(tm_year=2019, tm_mon=7, tm_mday=16, tm_hour=15, tm_min=2, tm_sec=13, tm_wday=1, tm_yday=197, tm_isdst=0)
    	time.localtime(time.time()) # 返回的是北京时间
    	# time.struct_time(tm_year=2019, tm_mon=7, tm_mday=16, tm_hour=23, tm_min=2, tm_sec=13, tm_wday=1, tm_yday=197, tm_isdst=0)
    
  4. 字符串时间转格式化时间

    time.strptime(str, format)

    	time.strptime( "2019-11-11 00:00:00", "%Y-%m-%d %H:%M:%S")
    	# time.struct_time(tm_year=2019, tm_mon=11, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=315, tm_isdst=-1)
    
  5. 格式化时间转时间戳

    time.mktime(struct_time)

    	time.localtime() # 生成现在时间的格式化时间
    	time.mktime(time.localtime()) # 1563289742.0
    
  6. time 库的其他用法
    - time.sleep(10) #  睡眠十秒钟,程序在此暂停
    - time.perf_counter() # 使用时钟信号进行计时,精确到毫秒,可用于程序计时
    - time.monotonic() # 获取的是系统重启后到现在的时间,返回的是浮点数,重启后重置为零
    	- monotonic 意为单调,无变化的
    - time.time() # 获取自1970年1月1日开始的时间戳,返回为浮点数
    - time.clock() # 获取从程序开始到现在的时间,也可用于程序计时
    

datetime 使用

datetime 库简介

  1. datetime下面有四个主要库

    • date
    • time
    • datetime * 主要使用
    • timedelta * 将时间进行加减等计算操作
  2. datetime库是基于time库的封装库,time库更适用于时间的提取和简单操作,datetime库有很多对于时间的计算操作

一些简单的定义

  1. tz timezone 时区
时区名 简称 中文名 使用城市,地区,国家 与北京时间相比 备注
Pacific Daylight Time PDT 太平洋夏令时 旧金山,加州 北京时间减去16 小时
Central Standard Time CST 中部标准时间 芝加哥 - 14 小时
East Standard Time EST 东部标准时间 华盛顿,纽约 - 12 小时
Greenwich Mean Time GMT 格林尼治标准时间 伦敦 - 8小时
China Coast Time CCT 中国沿海时间 北京 整点 我国虽然纬度跨度大,但全境都采用北京时间
  1. UTC 协调世界时

    1. UTC 是国际间商定好的协议时间,用于平衡国际原子时和地球自转世界时而约定的时间
    2. 国际原子时是通过铯原子等测量的绝对时间,精确度高,且时间不受外界变化而影响
    3. 自转世界时由于地球轨道的形状为椭圆,且地球自转的地轴也会变化,所以通过观测太阳继而获取地球自转时间再确定时间的方式,不稳定,且与国际原子时相比,会慢一些
    4. 所以协调世界时的时间是两者的折衷方案
  2. DST (daylight saving time)夏令时

    • 本杰明,富兰克林为了让法国人早点起床,节省晚上的照明,从而节约能源
    • 为了提倡早睡早起,好好利用白天的光照,就在夏季时人为地将时间提早一个小时

datetime的操作

  1. 时间加减
    # 时间减一天
    (datetime.datetime.now()+datetime.timedelta(days=-1)).strftime("%Y-%m-%d 00:00:00")
    # 时间加一天
    (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d 00:00:00")
    
  2. timedelta(weeks, days, hours, minutes, seconds, microseconds)
    	1. weeks 星期   
    	2. days 天
    	3. hours 小时
    	4. minutes 分钟
    	5. seconds 秒
    	6. microseconds 毫秒
    	7. 以上都支持浮点数,且都是可选的
    
  3. 时间比大小
    timedelta(seconds=60) > timedelta(hours=1)
    # False
    
  4. 将datetime对象转化为 固定格式
    from datetime import datetime
    now = datetime.now()
    print(str(now))
    
    '2019-12-05 09:13:05.846875'
    
    from datetime import datetime
    now = datetime.now()
    print(now.strftime("%Y-%m-%d %H:%M:%S"))
    
    2019-12-05 09:13:05
    
  5. 将字符串转化为datetime对象
    from datetime import datetime
    print(datetime.strptime("1996-10-01 00:02:12", \
          "%Y-%m-%d %H:%M:%S"))
    1996-10-01 00:02:12
    
  6. 常用时间字符的格式意义
符号 意义 示例
%Y 2019
%y 两位数的年 19
%a 星期几的缩写 周四 Thu
%A 星期几的英文 周四 Thursday
%b 月份的缩写 Dec
%B 月份的全称 December
%m 月份 12
%M 分钟 26
%d 5
%D 英文常用的日期 12/05/19
%H 小时 9
%h 月份的缩写 Dec
%s 时间戳(无小数) 1575508385
%S 32
%f 毫秒数(小数点后的数,
time 库不可用)
488390

更多,可以运行代码参看结果

import time
from datetime import datetime
print(time.time())
string = ""
for i in range(65, 91):
    string = "%" + chr(i) + " | "
    
    print("string == %s"%string)
    print("datetime == %s"%datetime.now().strftime(string))
    print("time == %s"%time.strftime(string))
    print("-------")

for i in range(97, 123):
    string = "%" + chr(i) + " | "

    print("string == %s"%string)
    print("datetime == %s"%datetime.now().strftime(string))
    print("time == %s"%time.strftime(string))
    print("-------")

你可能感兴趣的:(基础使用)