百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

二十六、深入Python中的time和datetime模块

toyiye 2024-06-21 12:38 10 浏览 0 评论

「@Author: Runsen」

timedatetimePython处理日期和时间的标准库。在我们项目的实际开发当中使用率是非常高的。datetime模块有四个重要的类,datetimedatetime,以及timedelta类,分别表示的是日期对象、时间对象、日期时间对象和时间差对象。

时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。 注意:目前Python中支持的最大的时间戳为32535244799(3001-01-01 15:59:59)

Python的time块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳。例如:

import time 
time.time() #返回当前时间的时间戳 2000年时间戳 都是10位

1557212908.1839943

# 获取毫秒级别的时间戳(爬虫参数基本用14位时间戳加密)
int(round(time.time() * 1000))
1557212908183

在编写代码时,往往涉及时间、日期、时间戳的相互转换。

「str类型的日期转换为时间戳」

import time 

# 字符类型的时间
t = '2019-05-07 15:08:28'
# 转为时间数组
timeArray = time.strptime(t, "%Y-%m-%d %H:%M:%S")
print(timeArray)
# timeArray可以调用tm_year等
print(timeArray.tm_year)   # 2019
# 转为时间戳
timeStamp = int(time.mktime(timeArray))
print(timeStamp)  # 1381419600


# 结果如下
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=15, tm_min=8, tm_sec=28, tm_wday=1, tm_yday=127, tm_isdst=-1)
2019
1557212908

「字符串格式更改」

# "2019-05-07 15:08:28" 改为 "2019/5/7 15:08:28"
# 先转换为时间数组
import time
str_time = "2019-05-07 15:08:28"
time_array = time.strptime(str_time, "%Y-%m-%d %H:%M:%S")
other_way_time = time.strftime("%Y/%m/%d %H:%M:%S", time_array)

print(other_way_time)   # 2019/05/07 15:08:28

now = datetime.datetime.now()
otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2019--05--07 15:08:28

「时间戳转时间日期」

import time 
import datetime 
# 使用time
timeStamp = 1557212908
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print(otherStyleTime)   # 2019--05--07 15:08:28
# 使用datetime
timeStamp = 1557212908
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime)   # 2019--05--07 15:08:28
# 使用datetime,指定utc时间,相差8小时
timeStamp = 1557212908
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime)   # 2019--05--07 07:08:28

Datetime

datatime模块是在time模块的基础之上做了封装,提供了更多更好用的类供我们使用,常用的有datetimedatetimetimedeltatzinfo。但是为了更灵活的处理时间,最好是将time模块和datetime模块中的精髓学习到。

date类

date类:主要用于处理年、月、日。

date类的构造函数如下:datetime.date(year, month, day)

示例:

from datetime import date
d = date(1999, 9, 29)
print(d)
print('year:', d.year)
print('month:', d.month)
print('day:', d.day)

具体输出:

1999-09-29
year: 1999
month: 9
day: 29

time类

time类:主要用于处理小时、分钟、秒。

time类的构造函数如下:datetime.time(hour[,minute[,second[,microsecond[,tzinfo]]]])

示例:

from datetime import time
t = time(22, 45, 59)
print(t)
print('hour:', t.hour)
print('minute:', t.minute)
print('second:', t.second)
print('microsecond:', t.microsecond) #微秒
print('格式化输出:', t.strftime('%H:%M:%S'))
print('Earliest  :', datetime.time.min) 
print('Latest    :', datetime.time.max) 

输出:

22:45:59
hour: 22
minute: 45
second: 59
microsecond: 0
格式化输出: 22:45:59
Earliest  : 00:00:00
Latest    : 23:59:59.999999

datetime子类

datetime子类是date对象和time对象的结合体,是datetime的子类,和它的方法很类似。

它的构造函数如下:

datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]]),

各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

「获取当前日期和时间」

>>> from datetime import datetime
>>> now = datetime.now() # 获取当前datetime
>>> print(now)
2019-05-07 16:28:07.198690
>>> print(type(now))
<class 'datetime.datetime'>

timedelta类

timedelta类是用来计算二个datetime对象的差值的。可以进行加减乘除运算的,它的实例化方法和datetime对象很类似 此类中包含如下属性:

  • (1) days:天数。
  • (2) microseconds:微秒数(>=0并且<1秒)。
  • (3) seconds:秒数(>=0并且<1天)。

两个datedatetime对象相减就可以返回一个timedelta对象。

import datetime as dt
date1=dt.date(2020,10,28)
timedel=dt.timedelta(days=4)
print('四天后的日期是:', date1+timedel)

四天后的日期是: 2020-11-01

?

本文已收录 GitHub,传送门~[1] ,里面更有大厂面试完整考点,欢迎 Star。

?


Reference

[1]

传送门~: https://github.com/MaoliRUNsen/runsenlearnpy100

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码