Python之时间和日期使用小结
作者:小灰灰Blog 发布时间:2021-01-11 09:33:21
对于日期的操作可以说是比较常见的case了,日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现
1. 基本包引入
主要需要引入时间和日期的处理包,后面的基本操作都是基于此
import datetime
import time
2. 获取当前时间
获取当前时间,有几种方式,分别使用time和datetime来演示
a. time
获取当前时间,格式化为字符串输出
now = time.strftime("%Y-%m-%d %H:%M:%S")
print(now)
获取当前时间,以时间戳方式输出,结果为float类型,单位为s
now=time.time()
print(now)
b. datetime
直接调用now()函数获取当前时间,返回datetime类型对象
now = datetime.datetime.now()
print(now)
3. 时间戳转datetime
函数: datetime.datetime.fromtimestamp()
将时间戳转换为datetime类型,因为后者可以进行日期的计算(如常见的加减或者格式化)
# 获取当前的时间戳
now = time.time()
# 将时间差转换为datetime对象
date = datetime.datetime.fromtimestamp(now)
print(date)
4. 时间戳转格式化日期a. time
函数 time.strftime(format, localtime) 和 time.localtime(timestamp)
借助time的time.strftime
函数来实现转换,这里还需要做一个额外的处理,将时间戳转换为struct_time 对象
now = time.time()
# 首先格式化时间戳为struct_time对象,接着格式化输出
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
b. datetime
函数 datetime.datetime.fromtimestamp 与 datetime.datetime.strftime()
借助前面的知识点即可实现,先将timestamp转换为datetime, 然后将datetime格式化为字符串
now=time.time()
date =datetime.datetime.fromtimestamp(now)
date.strftime('%Y-%m-%d %H:%M:%S')
5. 字符串转时间戳
函数 strptime(str) 与 time.mktime(struct_time)
前面格式化输出字符串时,主要利用的是strftime
,这里则主要使用 strptime
now='2019-02-11 18:45:22'
struct_time=time.strptime(now , '%Y-%m-%d %H:%M:%S')
timestamp=time.mktime(struct_time)
6. 字符串转datetime
函数 datetime.datetime.strptime(str, format)
依然使用strptime
函数来实现转换
now='2019-02-11 18:45:22'
date=datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S')
7. datetime 转字符串
函数 datetime.datetime.strftime(format)
利用strftime
来实现
now = datetime.datetime.now()
now.strftime('%Y-%m-%d %H:%M:%S')
8. datetime 转时间戳
函数 datetime.datetime.timestamp()
结合前面的这个就比较好实现了
now = datetime.datetime.now()
now.timestamp()
9. datetime转struct_time
now = datetime.datetime.now()
# 转换为 struct_time 对象
t=now.timetuple()
# struct_time 输出时间戳
timestamp=time.mktime(t)
10. 日期加减操作
函数 datetime.timedelta
日期的加减操作,这里主要是datetime对象来操作,一个简单的例子如下
now = datetime.datetime.now()
# 前一小时
d1 = now - datetime.timedelta(hours=1)
print(d1.strftime("%Y-%m-%d %H:%S:%M"))
# 前一天
d2 = now - datetime.timedelta(days=1)
print(d2.strftime("%Y-%m-%d %H:%S:%M"))
# 上周日
d3 = now - datetime.timedelta(days=now.isoweekday())
print(d3.strftime("%Y-%m-%d %H:%S:%M"), " ", d3.isoweekday())
# 上周一
d31 = d3 - datetime.timedelta(days=6)
print(d31.strftime("%Y-%m-%d %H:%S:%M"), " ", d31.isoweekday())
# 上个月最后一天
d4 = now - datetime.timedelta(days=now.day)
print(d3.strftime("%Y-%m-%d %H:%S:%M"))
# 上个月第一天
print(datetime.datetime(d4.year, d4.month, 1))
11. 格式化符号
%y # 两位数的年份表示(00-99)
%Y # 四位数的年份表示(000-9999)
%m # 月份(01-12)
%d # 月内中的一天(0-31)
%H # 24小时制小时数(0-23)
%I # 12小时制小时数(01-12)
%M # 分钟数(00=59)
%S # 秒(00-59)
%a # 本地简化星期名称
%A # 本地完整星期名称
%b # 本地简化的月份名称
%B # 本地完整的月份名称
%c # 本地相应的日期表示和时间表示
%j # 年内的一天(001-366)
%p # 本地A.M.或P.M.的等价符
%U # 一年中的星期数(00-53)星期天为星期的开始
%w # 星期(0-6),星期天为星期的开始
%W # 一年中的星期数(00-53)星期一为星期的开始
%x # 本地相应的日期表示
%X # 本地相应的时间表示
%Z # 当前时区的名称
%% # %号本身
来源:https://segmentfault.com/a/1190000018137608


猜你喜欢
- 在网页中经常见到两类不同的按钮。一类表示当前所示的状态,一类表示将要进行的动作。(如下图) 那么,同样是icon类的按钮,为什么有
- 运行多进程 每个子进程的内存空间是互相隔离的 进程之间数据不能共享的互斥锁但是进程之间都是运行在一个操作系统上,进程之间数据不共享,但是共享
- 一.Orcal临时表分类1.会话级临时表1).保存一个会话Session的数据。2).当会话退出时,临时表数据自动清空。表结构与元数据还存储
- 划动门菜单技术:运行代码框<style>body {font-size:12px;font-family:宋体}ul.TabBa
- 这次主要记录在windows下嵌入 python 解释器的过程,程序没有多少,主要是头文件与库文件的提取。程序平台:windows10 64
- 写在前面SciPy的optimize模块提供了许多数值优化算法,下面对其中的一些记录。非线性方程组求解SciPy中对非线性方程组求解是fsl
- If...Then...Else 语句的一种变形,即添加任意多个 ElseIf 子句以扩充 If...Then...Else 语句的功能,允
- 1、前言 MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、
- 根据“廖雪峰”的教程进行python学习,计划每天抽出1-2个小时的时间进行充电。Python是著名的“龟叔”Guido van Rossu
- Silverlight也算一个比较开放的技术。Button控件其实也是一些标准的Grid、Canvas、Rectangle、TextBloc
- 前言前几天写了一篇MySQL高并发生成唯一订单号的方法,有人私信问有没有SQL server版本的,今天中午特地写了SQL server版本
- 本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法。分享给大家供大家参考,具体如下:demo.py(类属性,所有实例对象共用
- li {list-style-image: url(images/disc.gif);}li的这个样式定义是将列表项目使用图片来代替显示的小
- 最近的项目需要根据用户所属时区制定一些特定策略,学习、应用了若干python3的时区转换相关知识,这里整理一部分记录下来。下面涉及的几个概念
- 以下是个人对Python深浅拷贝的通俗解释,易于绕开复杂的Python数据结构存储来进行理解!高级语言中变量是对内存及其地址的抽象,Pyth
- 最近在折腾验证码识别。最终的脚本的识别率在92%左右,9000张验证码大概能识别出八千三四百张左右。好吧,其实是验证码太简单。下面就是要识别
- 什么是AjaxAjax基本概念Ajax(Asynchronous JavaScript and XML):翻译成中文就是异步的JavaScr
- MySQL批量插入数据脚本#!/bin/bashi=1;MAX_INSERT_ROW_COUNT=$1;while [ $i -le $MA
- 前言:文件处理是任何 Web 应用程序的重要组成部分。Python 有几个用于创建、读取、更新和删除文件的函数。1.文件处理在 Python
- 因为javascript的事件模型有三种,它们分别是NN4、IE4+和W3C/Safari;这也造成了在不同的浏览器中处理event的差异,