文档章节

python time和datime使用

acutesun
 acutesun
发布于 2017/08/22 22:01
字数 1307
阅读 48
收藏 0

time模块

UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时

time模块主要有三种格式:

  • timestamp 时间戳,表示从1970年1月1日00:00:00 开始按秒计算的偏移量
  • struct_time 时间元组,共有九个元组。
  • format time 格式化时间,已格式的结构使得时间具有更好的可读性,包括自定义格式和固定格式

常用方法:

  1. time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准
time.localtime()
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=22, tm_hour=12, tm_min=26, tm_sec=36, tm_wday=1, tm_yday=234, tm_isdst=0)

    2.time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time

time.gmtime()
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=22, tm_hour=12, tm_min=27, tm_sec=12, tm_wday=1, tm_yday=234, tm_isdst=0)

    3.time.time():返回当前时间的时间戳

time.time()
1503404864.0598114

    4.time.mktime(t):将一个struct_time转化为时间戳

time.mktime(time.localtime())
1503404894.0

    5.time.sleep(secs):线程推迟指定的时间运行。单位为秒

    6.time.clock():这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)

if __name__ == '__main__':
    time.sleep(1)
    print('clock1: ', time.clock())
    time.sleep(1)
    print('clock1: ', time.clock())
    time.sleep(1)
    print('clock1: ', time.clock())

  7.time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。

time.asctime()
'Tue Aug 22 12:28:47 2017'

      8.time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。

time.ctime()
'Tue Aug 22 12:29:29 2017'
time.ctime(time.time())
'Tue Aug 22 12:29:42 2017'

    9.time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。

time.strftime('%Y-%m-%d %X')
'2017-08-22 11:57:37'

time.strftime('%Y-%m-%d %H:%M:%S')
'2017-08-22 11:58:36'

 

format time

格式 含义
%a 本地(locale)简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,01 - 12)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(01 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%’字符

datetime模块

以datetime 为中心,转换目标。

  • datetime 
    >>> from datetime import datetime
    >>> now = datetime.now()
    >>> now
    datetime.datetime(2017, 8, 22, 20, 49, 18, 520999)
    >>> type(now)
    <class 'datetime.datetime'>
  • timestamp
    >>> import time
    >>> time.time()
    1503406350.929317
  • time tuple
    >>> time.localtime()
    time.struct_time(tm_year=2017, tm_mon=8, tm_mday=22, tm_hour=20, tm_min=52, tm_sec=54, tm_wday=1, tm_yday=234, tm_isdst=0)
  • string
    >>> datetime.now().strftime('%Y-%m-%d %X')
    '2017-08-22 20:54:14'
  • date
    >>> datetime.now().date()
    datetime.date(2017, 8, 22)

 

datetime 基本操作

1.获取当天date

>>> datetime.now().date()
datetime.date(2017, 8, 22)
from datetime import date
>>> today = date.today()
>>> today

2.获取明天/ 前N天

>>> from datetime import timedelta
>>> datetime.now() + timedelta(days=1)
datetime.datetime(2017, 8, 23, 21, 0, 7, 295142)

3.获取当天开始和结束时间(00:00:00 23:59:59)

>>> datetime.datetime.combine(datetime.date.today(), datetime.time.min)
datetime.datetime(2017, 8, 22, 0, 0)
>>> datetime.datetime.combine(datetime.date.today(), datetime.time.max)
datetime.datetime(2017, 8, 22, 23, 59, 59, 999999)

4.获取两个datetime时间差

>>> (datetime(2015,1,13,12,0,0) - datetime.now()).total_seconds()\
    -82285613.367164

5. 获取本周/本月/ 上月最后一天

>>> datetime.now().date()
datetime.date(2017, 8, 22)
>>> today = datetime.now().date()
>>> today
datetime.date(2017, 8, 22)

>>> sunday = today + timedelta(6-today.weekday())
>>> sunday
datetime.date(2017, 8, 27)

获取本月最后一天

>>> import calendar
>>> today = date.today()
>>> _, day_num = calendar.monthrange(today.year, today.month)
>>> day_num
31
>>> last_day = date(today.year, today.month, day_num)
>>> last_day
datetime.date(2017, 8, 31)

获取上个月最后一天

from datetime import date
>>> today = date.today()
>>> today
datetime.date(2017, 8, 22)
>>> first = date(day=1, month=today.month, year=today.year)

>>> lastMonth = first-timedelta(days=1)
>>> lastMonth
datetime.date(2017, 7, 31)

 

关系转换

Datetime Object / String / timestamp / time tuple

datetime <=> string

>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')
'2017-08-22 21:36:39'
>>> datetime.strptime("2017-08-22 21:39:36", '%Y-%m-%d %H:%M:%S')
datetime.datetime(2017, 8, 22, 21, 39, 36)

datetime <=> timetuple

>>> datetime.now().timetuple()
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=22, tm_hour=21, tm_min=40, tm_sec=40, tm_wday=1, tm_yday=234, tm_isdst=-1)

timetuple->timestamp->datetime

>>> import time
>>> time.mktime(time.localtime())
1503410219.0
>>> datetime.datetime.fromtimestamp(time.mktime(time.localtime()))
datetime.datetime(2017, 8, 22, 21, 58, 18)

 

datetime <=> date

>>> datetime.now().date()
datetime.date(2017, 8, 22)
>>> import datetime
>>> datetime.time()
datetime.time(0, 0)
>>> today = datetime.date.today()
>>> datetime.datetime.combine(today, datetime.time())
datetime.datetime(2017, 8, 22, 0, 0)

datetime <=> timestamp

>>> now = datetime.now()
>>> timestamp = time.mktime(now.timetuple())
>>> timestamp
1503409670.0
>>> datetime.fromtimestamp(time.time())
datetime.datetime(2017, 8, 22, 21, 49, 38, 72906)

 

© 著作权归作者所有

acutesun
粉丝 0
博文 71
码字总数 83152
作品 0
程序员
私信 提问
编译python的时候遇到错误

环境是centOS7.5x64,python3.7.0,当使用make命令的时候报以下错误 Failed to build these modules: _uuid 具体的是 /root/python3/Python-3.7.0/Modules/_uuidmodule.c:15:5: error: unkn......

綵se亱晚
2018/07/01
1K
1
Python数据库编程入门教程

这年头,还拿打印"Hello World"做教程?毛主席说了,你这不是耍流氓么!这个时代,数据库是王道!今天,我就用一个简单实用的销售数据库开发案例来引导感兴趣的读者入门Python数据库编程技术...

派派技术小组
2013/02/05
929
0
谁是速度之王(Python vs JavaScript)?

Python 是个比较成熟的语言,运行速度在几年前是快于 JavaScript 的。但这些年 JavaScript 的解释器发展很快,特别是 Google 的 V8 和 Mozilla 的 SpiderMonkey, 将 JavaScript 的运行速度提...

开心303
2012/03/20
4K
0
Python vs JavaScript

Python 是个比较成熟的语言,运行速度在几年前是快于 JavaScript 的。但这些年 JavaScript 的解释器发展很快,特别是 Google 的 V8 和 Mozilla 的 SpiderMonkey, 将 JavaScript 的运行速度提...

Raymin
2012/03/19
6.2K
6
Python-memcached的基本使用

想学Python,又想研究下memcached的客户端,于是拿Python-memcached研究研究~~~ 1.memcached的安装 请参考本博另一文章《Linux下安装memcached》 启动一个memcached实例:memcached -m 10 -...

flynewton
2010/12/04
23.8K
3

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部