python 中处理日期时间数据通常使用datetime和time库

因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。

在Python文档里,time是归类在Generic Operating System Services中,换句话说,它提供的功能是更加接近于操作系统层面的。通读文档可知,time模块是围绕着 Unix Timestamp 进行的。

time库主要包括一个类 struct_time,另外其他几个函数及相关常量。 需要注意的是在该模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可能会在不同的平台有不同的效果。另外一点是,由于是基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 - 2038 之间,如果你写的代码需要处理在前面所述范围之外的日期,那可能需要考虑使用datetime模块更好。

所以我们可以得到这样的结论:一般情况下我们会使用datetime库来处理日期和时间,而需要使用一些只有time库提供的函数时再单独引用,例如:sleep函数。

datetiem库的使用方法,以及常用函数

datetime库中定义了5个类,分别是

1、date:表示日期

2、dateitme:表示日期和时间

3、time:表示时间

4、timedelta:表示时间间隔

5、tzinfo:时区相关信息

一、datetime.date类

date类可以用年月日参数进行初始化

day1 = datetime.date(2019, 4, 19)

常用方法:

以下方法包括了类方法和对象方法,这两者的区别在于,类方法可以直接由类调用也可以由对象调用,而对象方法必须由对象调用,所以通常类方法获得的结果与具体对象无关,而实际使用时也通常以类调用为主。

1、ctime() 对象方法,返回格式如 Sun Apr 16 00:00:00 2019

>>> day1.ctime()
'Fri Apr 19 00:00:00 2019'

2、fromtimestamp(timestamp) 类方法,根据给定时间戳,返回一个date对象

>>> datetime.date.fromtimestamp(1555683831)
datetime.date(2019, 4, 19)

3、today() 类方法,返回一个代表今天日期的date对象

>>> datetime.date.today()
datetime.date(2019, 4, 19)

4、isocalendar() 对象方法,返回格式如(年份, 第几周, 一周中第几天)的元组

>>> day1.isocalendar()
(2019, 16, 5)

上面数据表示day1是2019年第16周的星期5

5、isoformat() 对象方法,返回格式为YYYY-MM-DD格式的字符串

>>> day1.isoformat()
'2019-04-19'

6、isoweekday() 对象方法,返回日期是星期几,1到7分别表示星期一到星期日

>>> day1.isoweekday()
5

上面数据表示day1(2019年4月19日)是星期5

7、replace(year, month, day) 对象方法,返回一个新date对象,替换指定年、月、日,没有替换的保持不变

>>> day1
datetime.date(2019, 4, 19)
>>> day1.replace(2018)
datetime.date(2018, 4, 19) # 这里年份被替换了
>>> day1
datetime.date(2019, 4, 19) # 对象本身并不会变化
>>> day1.replace(year=2017, day=20)
datetime.date(2017, 4, 20) # 这里指定了替换年和日,月份保持不变

8、strftime(format) 对象方法,根据参数对date对象进行格式化输出

>>> day1.strftime('%Y-%m-%d')
'2019-04-19' # 这个格式与isoformat等价

format参数中试用的日期格式化符号有:

%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 当前时区的名称

%% %号本身

9、timetuple() 对象方法,返回日期对应的time.struct_time对象

>>> day1.timetuple()
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=109, tm_isdst=-1)

10、weekday() 对象方法,返回日期的星期数,为0至6,0表示星期一,6表示星期日

>>> day1.weekday()
4 # 这里4表示的是星期5,这和isoweekday不同

二、datetime.time类

time类有5个参数datetime.time(hour(小时), minute(分钟), second(秒), microsecond(微秒), tzinfo(时区)),在这里时区暂不讨论。

创建对象时,小时是必须的参数,其他视情况而定。time类在实际应用中很少用到。

常用方法:

1、replace() 对象方法,替换时间参数

2、strftime(format) 对象方法,根据format格式返回时间字符串

3、isoformat() 对象方法,按照hh:mm:dd格式输出时间

三、 datetime.datetime类

1、ctime() 对象方法,返回格式如 Sun Apr 16 00:00:00 2019

2、now() 类方法,返回一个表示当前系统日期和时间的datetime对象。datetime类也有类方法today(),结果与now()相同。

>>> datetime1= datetime.datetime.now()
>>> datetime1
datetime.datetime(2019, 4, 19, 23, 41, 15, 697288)

3、date() 对象方法,返回一个表示datetime对象日期的date对象

>>> datetime1.date()
datetime.date(2019, 4, 19)

4、time() 对象方法,返回一个表示datetime对象时间的time对象

>>> datetime1.time()
datetime.time(23, 41, 15, 697288)

5、fromtimestamp(timestamp) 类方法,根据指定时间戳返回一个datetime对象

6、replace() 对象方法,返回一个新的datetime对象,替换某个日期和时间参数其余保持不变

7、strftime(format) 对象方法,根据format参数格式化输出

8、strptime(time_string, format) 类方法,将字符串time_string转换成datetime对象,字符串的日期格式由format指定

>>> datetime2 = datetime.datetime.strptime('2019-04-19 21:05:35','%Y-%m-%d %H:%M:%S')
>>> datetime2
datetime.datetime(2019, 4, 19, 21, 5, 35)

四、datetime.timedelta类

这个类主要用于进行两个日期的计算,例如:

>>> a = datetime.datetime.now()
>>> b = datetime.datetime.now()
>>> a
datetime.datetime(2019, 4, 19, 23, 56, 32, 487326)
>>> b
datetime.datetime(2019, 4, 19, 23, 56, 42, 84236)
>>> b-a
datetime.timedelta(seconds=9, microseconds=596910)
>>> (b-a).seconds
9
>>> b = b.replace(year=2018, month=5)
>>> b
datetime.datetime(2018, 5, 19, 23, 56, 42, 84236)
>>> a -b
datetime.timedelta(days=334, seconds=86390, microseconds=403090)
>>> (a-b).seconds
86390
>>> (a-b).total_seconds()
28943990.40309

给时间加一小时

>>> time1 =  datetime.datetime.now()
>>> one_hour = datetime.timedelta(hours=1)
>>> time1
datetime.datetime(2019, 4, 20, 0, 11, 21, 174662)
>>> time1 + one_hour
datetime.datetime(2019, 4, 20, 1, 11, 21, 174662)

类似的如果把timedelta参数设置为你要变动的时间大小,在进行加减运算就可以了。

转载于:https://my.oschina.net/u/2357619/blog/3039568

Python3的日期和时间的更多相关文章

  1. python3之日期和时间

    1.python3日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时 ...

  2. [转]python3之日期和时间

    转自:https://www.cnblogs.com/zhangxinqi/p/7687862.html#_label6 阅读目录 1.python3日期和时间 2.时间元组 3.获取格式化的时间 4 ...

  3. python3: 数字日期和时间(1)

    ---恢复内容开始--- 1. 数字的四舍五入 Q: 你想对浮点数执行指定精度的舍入运算 A: 简单的使用内置的round(value, ndigits)函数即可. >>> roun ...

  4. python3: 数字日期和时间(2)

    12.基本的日期与时间转换 Q: 你需要执行简单的时间转换,比如天到秒,小时到分钟等的转换 A: 为了执行不同时间单位的转换和计算,请使用 datetime 模块. 比如,为了表示一个时间段,可以创建 ...

  5. python3之日期和时间(转载)

    转载:https://www.cnblogs.com/zhangxinqi/p/7687862.html a = datetime.datetime.now() time.sleep(10) b = ...

  6. Python3 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  7. (转)Python3 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  8. python3>日期和时间

    阅读目录 1.python3日期和时间 2.时间元组 3.获取格式化的时间 4.格式化日期 5.获取月日历 6.Time模块 7.datetime模块 回到顶部 1.python3日期和时间 Pyth ...

  9. 吴裕雄--天生自然python学习笔记:Python3 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

随机推荐

  1. 用人话告诉小白:什么是项目管理(例如Maven),什么是调试工具(即debugger),什么是编译(即compile)

    项目管理 以java程序的项目管理软件Maven为例,java程序根据代码的不同需要不同的jar文件才能编译运行. 人物:两个程序员A和B 物品:一个java程序G,许多jar文件 场景:当A在自己电 ...

  2. 【php】面向对象(五)

    一. 类型约束: a) 约束函数可传入的参数类型二. 类的遍历 a) Foreach b) 可以将类当中的所有成员属性遍历出来三. 关于操作类与对象的一些函数: a) 判断函数 i. Function ...

  3. Linux ssh登录出错

    今天登录远程主机的时候,出现了以下错误: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOT ...

  4. python 删除三天前的日志.py

    #获取所有文件def file(): for cur_dir, dirs, files in os.walk(r'/学习/接口自动化/BestTest/作业/logs'): # cur_dir(当前路 ...

  5. Restlet Client发送GET、POST等请求

    插件下载 百度云盘 链接:https://pan.baidu.com/s/13R4s1UR5TONl2JnwTgtIYw 密码:rt02 插件安装 解压后,直接拖进浏览器中. 功能演示

  6. AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题

    AJ分享,必须精品 一:效果 二:项目代码 这个Demo用的几个控制器分别画了不通的xib,随便拖拽了几个空间,主要是几个按钮的切换,主要代码展示下: // // NYViewController.m ...

  7. 给学妹的 Java 学习路线

    大家好,这篇文章主要是讲解下如何自学 Java,这个问题有很多粉丝私信问过,今天又有直系学妹问我如何学习 Java? 我就以我的经历,总结下分享给大家,有不当指出或者有更好的方法建议也欢迎留言指出,大 ...

  8. 【Tool】Windows系统安装Maven依赖管理工具

    安装Maven依赖管理工具 官网下载地址:http://maven.apache.org/download.cgi 系统环境要求: [JDK]Maven3.3版本+需要JDK1.7版本以上支持 [内存 ...

  9. 技术债务(Technical debt)的产生原因及衡量解决

    第一次发布代码,就好比借了一笔钱.只要通过不断重写来偿还债务,小额负债可以加速开发.但久未偿还债务会引发危险.复用马马虎虎的代码,类似于负债的利息.整个部门有可能因为松散的实现,不完全的面向对象的设计 ...

  10. Map使用foreach遍历方式,Map获取第一个键值

    List<Map<String, Object>> mapList = new ArrayList<>();  for (Map.Entry<String,O ...