20190313-时间和日期-Time
概述
在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的更多相关文章
- Android随笔之——Android时间、日期相关类和方法
今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...
- Lua库之时间和日期操作
Lua库之时间和日期操作 (2010-02-07 18:41:20) 转载▼ os.time() <== 返回当前系统的日历时间os.date() <== 返回本地化的时间字符串,这里是& ...
- date 显示或设置系统时间和日期
显示或设置系统时间和日期 date [options] [+format] date [options] [new date] date用来显示系统的时间和日期,超级用户可以使用date来更改系统时钟 ...
- java时间和日期类型
在java中,代表时间和日期的类型包括:java.util.Date和java.util.Calendar,此外,在JDBC API中还提供了3个扩展类,java.UtilDate类的子类:java. ...
- iOS中的时间和日期
怎么说?时间和日期不是了不起的属性.了不起的功能,但是,我们决不能够因此就“冷落”它. 一:怎么“搞到货”--如何获取时间.日期 //-=-==当前时间------默认显示“0时区”时间 NSDate ...
- Python 时间和日期模块的常用例子
获取当前时间的两种方法 import datetime,time now = time.strftime("%Y-%m-%d %H:%M:%S") print now now = ...
- Java 对时间和日期的相关处理
1. 获取当前系统时间和日期并格式化输出 import java.util.Date; import java.text.SimpleDateFormat; public class NowStrin ...
- PHP date 格式化一个本地时间/日期
PHP date 格式化一个本地时间/日期 date (PHP 4, PHP 5) date — 格式化一个本地时间/日期 说明 string date ( string $format [, int ...
- java JDK8 学习笔记——第13章 时间与日期
第十三章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 1.格林威治标准时间GMT 格林威治标准时间的正午是太阳抵达天空最高点之时.现在已经不作为标准时间使用. 2.世界时UT世界时 ...
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- SQL中的Datetime
在SQLserver中Datetime,只要格式是(yyyy-MM-dd HH:mm:ss)它都能认为是时间类型.
- C++中接口与实现分离的技术 ZZ
最简单清晰的例子:http://www.cnblogs.com/maoye/archive/2010/03/19/1690183.html 接口与实现分离 为什么这样设计? 主要原因是保持接口的稳定, ...
- nginx部署及简单优化
研究nginx优化时反复安装清理nginx,为方便做了一个简单部署脚本,用的最新稳定版1.14.0,默认路径,加入systemd系统进程管理中,可以通过systemd管理nginx的启动.终止.重载. ...
- ORM------多表操作
上面介绍了单表操作 下面就好比我们的sql语句这只能满足于我们的一些简单的操作不能适应我们更多的需要 所以我们需要用到更多的需求来进行我们的关系的建立以及查找 其实ORM语句就对应着我们的sql语句 ...
- Python学习---Model拾遗[1]180318
Model: 强大的数据库操作,弱小的数据验证 Form: 强大的数据验证 ModelForm: 强大的数据验证 + 弱小的数据库操作 Model拾遗 Model基本操作 1. 创建数据库表2. 修 ...
- innerHTML,innerText,textContent,outerHTML的用法以及区别
innerHTML获取的是对象起始的位置到终止位置全部内容,包含html标签. innerText和textContent结果是一样的,不包含标签,直接获取标签内的内容,区别是两者浏览器的兼容性. o ...
- phpMyAdmin提示“无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装。”
这是以前学生在使用phpwamp时遇到的一个问题(其他环境或是自己搭建时遇到此问题,解决方式同理) 其实这个问题与PHPWAMP本身无关,是电脑设置的问题,一般正常情况下不会出现这个问题. 现在把学生 ...
- BZOJ 1491 社交网络 Floyd 最短路的数目
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1491 题目大意: 见链接 思路: 直接用floyd算法求最短路,同时更新最短路的数目即 ...
- 洛谷 P4841 城市规划
构造简单无向图的EGF: \[ G(x)=\sum_{i}^{\infty}2^{\binom{i}{2}}\cdot\frac{x^i}{i!} \] 构造简单无向连通图的EGF: \[ F(x)= ...
- 1588. [HNOI2002]营业额统计【平衡树-splay 或 线段树】
Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...