概述

在Python中,与时间处理相关的模块有:time、datetime以及calendar,Python中通常有这几种方式表示时间:时间戳、格式化的时间字符串、时间元组(struct_time 共九种元素)本篇主要讲time模块。

  • 时间戳:时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量。Tick单位(时间间隔以秒为单位的浮点小数)最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年某日。查看一下type(time.time())的返回值类型,可以看出是float类型。返回时间戳的函数主要有time()、clock()等。
  • 格式化时间字符串:通常可以通过换返回特定的时间字符串
  • 时间元组:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()等。

时间戳

时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量。Tick单位(时间间隔以秒为单位的浮点小数)最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年某日。查看一下type(time.time())的返回值类型,可以看出是float类型。返回时间戳的函数主要有time()、clock()、mktime()等

time.time( ):返回当前时间的时间戳(1970纪元后经过的浮点秒数)

time.clock():用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。

time.mktime(tupletime):接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)

实例:

>>> time.time()
1552465936.2394762#time.time()是统计的wall time(即墙上时钟),也就是系统时钟的时间戳(1970纪元后经过的浮点秒数)。所以两次调用的时间差即为系统经过的总时间。
>>> time.clock()
761.021460792#记录进程在内存中耗时切片的综合。因为内存是轮询机制,因此time.clock()函数是记录当前python进程所占用cpu的总时间
>>> a = time.strptime('2019-01-01','%Y-%m-%d')
>>> time.mktime(a) #将一个struct_time转化为时间戳
1546272000.0

时间元组

struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。

索引(Index)

属性(Attribute)

值(Values)

0

tm_year(年)

比如2011

1

tm_mon(月)

1 - 12

2

tm_mday(日)

1 - 31

3

tm_hour(时)

0 - 23

4

tm_min(分)

0 - 59

5

tm_sec(秒)

0 - 61

6

tm_wday(一周的第几日)

0 - 6(0表示周日)

7

tm_yday(一年中的第几天)

1 - 366

8

tm_isdst(是否是夏令时)

默认为-1

time.gmtime([secs]):secs参数未提供,则以当前时间为准

time.localtime([secs]):secs参数未提供,则以当前时间为准

strptime(string,format):将一个指定格式的时间字符串转化成元组时,参数format的格式必须和string的格式保持一致,如果string中日期间使用“-”分隔,format中也必须使用“-”分隔,时间中使用冒号“:”分隔,后面也必须使用冒号分隔,否则会报格式不匹配的错误,format格式参考官方手册

    %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.

中文版

时间字符串支持的格式符号:(区分大小写)
%a 本地星期名称的简写(如星期四为Thu)
%A 本地星期名称的全称(如星期四为Thursday)
%b 本地月份名称的简写(如八月份为agu)
%B 本地月份名称的全称(如八月份为august)
%c 本地相应的日期和时间的字符串表示(如:
15/08/27 10:20:06)
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,0 - 11)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(00 - 61)
%U 一年中的星期数。(00 - 53星期天是一个
星期的开始。)第一个星期天之前的所有天数都
放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为
一个星期的开始。
%x 本地相应日期字符串(如15/08/01)
%X 本地相应时间字符串(如08:08:10)
%y 去掉世纪的年份(00 - 99)两个数字表示
的年份
%Y 完整的年份(4个数字表示年份)
%z 与UTC时间的间隔(如果是本地时间,返回
空字符串)
%Z 时区的名字(如果是本地时间,返回空字符
串)
%% ‘%’字符

实例:

>>> time.gmtime()#函数将一个时间戳转换为UTC时区(0时区)的struct_time,
time.struct_time(tm_year=2019, tm_mon=3, tm_mday=13, tm_hour=8, tm_min=50, tm_sec=46, tm_wday=2, tm_yday=72, tm_isdst=0)
>>> time.localtime()#函数将一个时间戳转换为当前时区的struct_time
time.struct_time(tm_year=2019, tm_mon=3, tm_mday=13, tm_hour=16, tm_min=50, tm_sec=52, tm_wday=2, tm_yday=72, tm_isdst=0)
>>> time.localtime(1552066987)#函数将一个时间戳转换为当前时区的struct_time
time.struct_time(tm_year=2019, tm_mon=3, tm_mday=9, tm_hour=1, tm_min=43, tm_sec=7, tm_wday=5, tm_yday=68, tm_isdst=0)
>>> time.strptime('2019-01-01','%Y-%m-%d')#将对应格式的时间字符串换为当前时区的struct_time
time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=1, tm_isdst=-1)

格式化时间字符串

Python格式化时间字符串是基于时间元组的基础上进行格式化的。常见的格式化时间元组的函数为time.asctime(time.local(time.time())),time.strftime(format[,t])等

time.asctime(time.local(time.time())):接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串

time.strftime(format[,t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化 为格式化的时间字符串,格式由参数format决定。如果未指定,将传入time.localtime()

实例:

>>> a
time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=1, tm_isdst=-1)
>>> time.asctime(a)#接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串
'Tue Jan 1 00:00:00 2019'
>>> time.strftime('%Y-%m-%d %H:%M:%S',a)#接收以时间元组,并返回以可读字符串表示的当地时间,格式由format决定。
'2019-01-01 00:00:00'

其他时间函数

time.ctime([secs]):作用相当于asctime(localtime(secs)),未给参数相当于asctime()

time.sleep(secs):推迟调用线程的运行,secs指秒数。

time.perf_counter():返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的

time.process_time() 返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的

实例:

>>> time.ctime(time.time())#作用相当于asctime(localtime(secs)),未给参数相当于asctime()
'Wed Mar 13 17:32:47 2019'
>>> time.asctime(time.localtime())#接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串 
'Wed Mar 13 17:33:01 2019'
>>> time.sleep(3)

20190313-时间和日期-Time的更多相关文章

  1. Android随笔之——Android时间、日期相关类和方法

    今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...

  2. Lua库之时间和日期操作

    Lua库之时间和日期操作 (2010-02-07 18:41:20) 转载▼ os.time() <== 返回当前系统的日历时间os.date() <== 返回本地化的时间字符串,这里是& ...

  3. date 显示或设置系统时间和日期

    显示或设置系统时间和日期 date [options] [+format] date [options] [new date] date用来显示系统的时间和日期,超级用户可以使用date来更改系统时钟 ...

  4. java时间和日期类型

    在java中,代表时间和日期的类型包括:java.util.Date和java.util.Calendar,此外,在JDBC API中还提供了3个扩展类,java.UtilDate类的子类:java. ...

  5. iOS中的时间和日期

    怎么说?时间和日期不是了不起的属性.了不起的功能,但是,我们决不能够因此就“冷落”它. 一:怎么“搞到货”--如何获取时间.日期 //-=-==当前时间------默认显示“0时区”时间 NSDate ...

  6. Python 时间和日期模块的常用例子

    获取当前时间的两种方法 import datetime,time now = time.strftime("%Y-%m-%d %H:%M:%S") print now now = ...

  7. Java 对时间和日期的相关处理

    1. 获取当前系统时间和日期并格式化输出 import java.util.Date; import java.text.SimpleDateFormat; public class NowStrin ...

  8. PHP date 格式化一个本地时间/日期

    PHP date 格式化一个本地时间/日期 date (PHP 4, PHP 5) date — 格式化一个本地时间/日期 说明 string date ( string $format [, int ...

  9. java JDK8 学习笔记——第13章 时间与日期

    第十三章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 1.格林威治标准时间GMT 格林威治标准时间的正午是太阳抵达天空最高点之时.现在已经不作为标准时间使用. 2.世界时UT世界时 ...

  10. [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. [NCH 1, 3]

    Preview: 1. Implement strStr() O(m*n): class Solution { public: int strStr(string haystack,string ne ...

  2. 关于VSTS自动Build报错问题之Microsoft.Net.Compilers

    报错内容如下: --06T11::.6035712Z ##[error]Dotnet command failed with non-zero exit code on the following p ...

  3. ASP.net Substitution 页面缓存而部分不缓存的实现方法

    在ASP.NET中要实现部分内容非缓存,而其它的都需要缓存输出,可以使用Substitution控件实现. <%@ Page Language="C#" AutoEventW ...

  4. Docker相关连接

    docker-compose文档:https://docs.docker.com/compose/compose-file/ dockerfile文档:https://docs.docker.com/ ...

  5. 【Leetcode】【Easy】Isomorphic Strings

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  6. Python学习---Django的request扩展[获取用户设备信息]

    关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...

  7. SharePoint2007深入浅出——使用jQuery UI

    jQuery1.6.4.js + jQuery UI 1.8.16.js 只有这个版本在IE8下的兼容性视图+Quirks(文本模式),dialog可以正常显示.

  8. Dockerfile.md

    Docker 使用 前提条件 Docker目前只能在64位CPU架构的计算机上运行(目前只能是x86_64 .amd64). Linux 3.8 或 更高版本的内核.3.8之前的版本也能运行,但效果不 ...

  9. Excel对同样项求和

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/yeweiouyang/article/details/32107423 方法一(SUMIF公式求和) ...

  10. Yii2.0 发送邮件时中文附件乱码的问题

    yii自带的邮件类使用的是MIME 协议,发送附件时用的是MIME 协议的 Content-disposition扩展,用扩展下载中文名称的附件时有时会正常,有时会乱码. 只需找到如下文件 的如下方法 ...