博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python时间运算的详细机制初探讨
阅读量:6158 次
发布时间:2019-06-21

本文共 2227 字,大约阅读时间需要 7 分钟。

本篇共2部分,上篇我们初步探讨Python时间运算的机制,下篇为一句话快速运用Python的datetime进行时间运算的技巧。

Python时间运算的详细机制初探讨

我们先来看一张图:

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

import time

导入时间模块;

In [5]: time.strptime('20161009','%Y%m%d')Out[5]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_

8481c8f592b7f349aa84a1de5c171db681516edf通过time.strptime()将普通字符时间转换为时间元祖,注意这两者在转换时需要指定字符时间的格式(%Y%m%d这里只用到了年月日);

In [6]: time.mktime(time.strptime('20161009','%Y%m%d'))Out[6]: 1475942400.0

8481c8f592b7f349aa84a1de5c171db681516edf通过time.mktime将上一步的时间元祖转换为时间戳,也就是1970年0时0分0秒到20161009的0时0分0秒为止,过了多少秒;

In [7]: time.localtime(1475942400.0)Out[7]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yd

8481c8f592b7f349aa84a1de5c171db681516edf通过 time.localtime将时间戳转换为时间元祖;

In [13]: time.strftime('%Y%m%d',time.localtime(1475942400.0))Out[13]: '20161009'

8481c8f592b7f349aa84a1de5c171db681516edf
通过
time.strftime
将时间元祖复原为普通字符时间,同样注意需要指定字符时间的格式。

附:字符时间常用格式

%Y  Year with century as a decimal number.%m  Month as a decimal number [01,12].%d  Day of the month as a decimal number [01,31].%H  Hour (24-hour clock) as a decimal number [00,23].%M  Minute as a decimal number [00,59].%S  Second as a decimal number [00,61].%z  Time zone offset from UTC.%a  Locale's abbreviated weekday name.%A  Locale's full weekday name.%b  Locale's abbreviated month name.%B  Locale's full month name.%c  Locale's appropriate date and time representation.%I  Hour (12-hour clock) as a decimal number [01,12].%p  Locale's equivalent of either AM or PM.

一句话快速进行python时间运算的技巧

1、python快速求值当前时间

当前的天数、当前的时间

In [1]: from datetime import datetime, timedelta, dateIn [2]: (datetime.now()).strftime('%Y%m%d')Out[2]: '20161009'In [3]: (datetime.now()).strftime('%Y/%m/%d %H:%M:%S')Out[3]: '2016/10/09 16:57:12'

同上,当前的周数、月份、上下午等都可以通过后面的格式化字符求出。例如,

%a代表英文周几,%b代表月份,%p代表AM/PM等,更多的参考下图:

2 、python快速时间运算

python周数运算、天数运算、小时运算、秒数运算、毫秒运算、微秒运算

In [5]: (datetime.now()-timedelta(days=1)).strftime('%Y%m%d')  # 1天前,N天前Out[5]: '20161008'In [6]: (datetime.now()-timedelta(hours=1)).strftime('%Y/%m/%d %H:%M:%S')  # 1小时前,n小时前Out[6]: '2016/10/09 16:00:02'

同上,weeks表示周为单位,second表示秒为单位,milliseconds表示毫秒为单位, microseconds微秒为单位。

其实就是给 timedelta() 这个类传入的参数变一下就可以了:

可传入的参数有 timedelta(weeks, days, hours, second, milliseconds, microseconds) 每个参数都是可选参数,默认值为0,参数值必须是这些(整数,浮点数,正数,负数)。

原文发布时间为:2017-02-28

本文作者:刘布丁

本文来自云栖社区合作伙伴“”,了解相关信息可以关注“”微信公众号

转载地址:http://dxofa.baihongyu.com/

你可能感兴趣的文章
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
深入python的set和dict
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
centos 下安装g++
查看>>
下一步工作分配
查看>>