在python中,与时间处理相关的模块有 time,datetime,calendar。

时间的两个概念:

UTC(世界协调时):

整个地球分为二十四时区,每个时区都有自己的本地时间。格林威治天文时间(GMT),世界标准时间。在中国为UTC+8,即东八区时间。

时间戳( timestamp):

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。

一、导入 datetime 模块

获得当前时间,datetime.datetime.now()方法

from datetime import datetime
now=datetime.now()
print(now) 输出:
2020-03-01 13:13:42.702864

构建时间类型 datetime.datetime(时间:年-月-日……),输出时间戳 时间.timestamp(),这里的时间是<class ‘datetime.datetime’>类型。

from datetime import datetime
newtime=datetime(2020,1,1,0,0,0) #新建一个时间类型数据
print(newtime)
data=newtime.timestamp() #构建时间戳
print(data) 输出:
2020-01-01 00:00:00
1577808000.0 #1970.1.1 0:0:0 - 2020.1.1 0:0:0 经历的秒数

时间戳转换成 datetime 类型 datetime.datetime.fromtimestamp(时间戳)

# 接上述代码
tm=datetime.fromtimestamp(data)
print(tm) 输出:
2020-01-01 00:00:00

二、时间与字符串

字符串类型转换为datetime 类型

通用格式datetime.datetime.strptime(str,"%Y-%m-%d %H:%M")

from datetime import datetime
str="2020-1-1 0:0"
tm=datetime.strptime(str,"%Y-%m-%d %H:%M")
print(tm) 输出:
2020-01-01 00:00:00

常见时间格式化符号:

格式符 时间格式
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-999
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
datetime 类型转换为字符串类型

时间.strftime("%c"),这里的时间是 <class ‘datetime.datetime’> 类型

from datetime import datetime
tm=ime=datetime(2020,1,2,12,30,0) #时间 2020-1-2 12:30:00
print(tm) print(tm.strftime("%Y-%m-%d")) # 输出年-月-日
print(tm.strftime("%H:%M")) # 输出时间
print(tm.strftime("%A")) # 输出星期
print(tm.strftime("%c")) # 适当日期和时间表示
# 适当日期 适当的时间 表示
print(tm.strftime("%x, %X")) # 日/月/年 时:分:秒 输出:
2020-01-02 12:30:00
2020-01-02 # 输出年-月-日
12:30 # 输出时间
Thursday # 输出星期
Thu Jan 2 12:30:00 2020 # 适当日期和时间表示
01/02/20, 12:30:00 # 日/月/年 时:分:秒

三、时间类型的运算

时间运算需要借助 timedelta 类。

from datetime import datetime,timedelta
now=datetime.now()
print(now)
print(now-timedelta(hours=2)) # 减去两个小时
print(now-timedelta(days=2,hours=2)) # 减去两天,两小时 输出:
2020-03-01 14:08:45.689264
2020-03-01 12:08:45.689264
2020-02-28 12:08:45.689264

更多详情请参考:

python官方文档:datetime类型 https://docs.python.org/3/library/datetime.html

python模块 | 时间处理模块—datetime模块的更多相关文章

  1. Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块

    Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fab ...

  2. python五十四课——datetime模块

    3.datetime模块:理解:datetime可以认为是time模块的补充/扩展datetime模块中有一些常用类:datetime类:记录了日期和时间数据信息date类:记录了日期数据信息time ...

  3. python常见模块之time,datetime模块

    一.time模块 time模块提供了一些用于管理时间和日期. time模块中时间的表现形式有三种: format_string  格式化的字符串 struct_time     结构化时间 times ...

  4. Python之时间(time)模块

    在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time( ...

  5. python初步学习-import和datetime模块

    模块 一个完整大型的python程序是由模块和包的形式组织起来的,可见模块在python中的重要性.模块是一种组织型式,它许多有关联(关系)的代码组织放到单独的独立文件中.简单的说,可以把模块理解为一 ...

  6. Python标准库笔记(3) — datetime模块

    datetime模块提供了简单和复杂的方式用于操纵日期和时间的类.虽然支持日期和时间运算,但实现的重点是为了输出格式化和操作高效地提取属性. 1. 模块内容 内容 描述 常量   datetime.M ...

  7. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块

    正则表达式   语法:             mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...

  8. re模块,正则表达式起别名和分组机制,collections模块,time与datetime模块,random模块

    re模块和正则表达式别名和分组机制 命名分组 (1)分组--可以让我们从文本内容中提取指定模式的部分内容,用()来表示要提取的分组,需要注意的是分组 是在整个文本符合指定的正则表达式前提下进行的进一步 ...

  9. 二十三、python中的time和datetime模块

    A.time模块   1. sleep():强制等待 import timeimport datetime print("start to sleep.....")time.sle ...

  10. Python之日期与时间处理模块(date和datetime)

    本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常需要用到日期与时间,如: 作为日志信息的内容输出 计算某个功能的执行时 ...

随机推荐

  1. vue结合webpack打包问题

    在使用vue开发项目时,如果要使用其单文件组件特性,必然要使用webpack或者其他打包工具打包,这里我用到的是webpack打包,首先是搭建vue环境和webpack环境,在这里遇到的一个问题是在成 ...

  2. 像追女神一样学好java~

    写在前面的话 ● 本文适合食用的观众大老爷和小建议: ----本文内容主要是围绕java这门语言展开~ 适合的食用的大老爷们: ★ 第一类:完全没学过其他编程语言入门java的小白 ★ 第二类:已经学 ...

  3. 【人才】亚马逊数据科学家JD

    Sr. Data Scientist - Amazon Homepage US, WA, Seattle • Job ID 271528 • Amazon Corporate LLC Job Desc ...

  4. call、apply 和 bind

    call().apply().bind() 都是用来重定义 this 这个对象的! var obj1 = { username: "HuiTaiLang", fn: functio ...

  5. 使用 AHK 在 VS Code 中根据上下文自动切换输入法状态

    平常在VS Code打公式,中英文切换一直狂点 Shift 手都快按断了,于是试图用 AutoHotKey 搞一些自动切换输入法程序,让它根据当前输入环境自动切输入法. 之前在网上搜到的是切换键盘的( ...

  6. BSOJ5086题解

    题意略. 我们设 \([x^k]G_n(x)\) 代表深度为 \(n\) 的树,距离为 \(k\) 的点对数量,\([x^k]F_n(x)\) 为深度为 $ n $ 的树中,深度为 \(k\) 的节点 ...

  7. jmeter关于入参转码encode问题

    我们的工作中,通过抓包经常会发现有很多入参都是被encode过一层,形成了如上图所示的样子: 这些参数我们是可以通过fiddler去转码的:但是如果我们要做jmeter的脚本,不可能每一次都手动去转码 ...

  8. 初探 Elasticsearch,学习笔记第一讲

          1. ES 基础   1.1 ES定义   ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展 ...

  9. Spfa 求含负权边的最短路 + 判断是否存在负权回路

    在Bellman-Ford算法之后,我们总算迎来了spfa算法,其实就如同堆优化Dijkstra算法之于朴素版Dijkstra算法,spfa算法仅仅是对Bellman-Ford算法的一种优化,但是在形 ...

  10. 防止入侵 两步修改XP远程管理默认端口

    自Windows 2000开始,微软就提供一项终端服务(Terminal Server)这项服务可以将远程的桌面传递到本地.通过该服务,可视化的远程管理可以非常方便的实现.继Windows 2000之 ...