Python的标准模块datetime模块,在我们的工作中应用非常频繁,下面对datetime中常用的方法进行了总结和测试;对每一个方法都使用了单元测试框架Unittest来配合测试。

主要的类型有:

  首先要导入datetime模块:from datetime import datetime, timedelta, timezone

  一、自己定义时间格式:1、datetime(2017,2,22,16,5,26);2、datetime.strptime('2017-02-22 16:05:26', '%Y-%m-%d %H:%M:%S')

  二、将datetime转化成timestamp格式:datetime(2017,2,22,16,5,26).timestamp()

  三、将timestamp转化成datetime格式:datetime.fromtimestamp(1487750726.0)

  四、将datetime转化成str格式:datetime(2017,2,22,16,5,26).strftime('%Y-%m-%d %H:%M:%S')

  五、利用timedelta进行时间相加:datetime.strptime('2017-02-22 16:05:26', '%Y-%m-%d %H:%M:%S') + timedelta(hours=10, days=2)

  六、利用timedelta进行时间相减:datetime.strptime('2017-02-22 14:05:26', '%Y-%m-%d %H:%M:%S') - timedelta(hours=1)

  八、转换时区:

  utc_datetime = datetime.strptime('2017-02-22 17:05:26', '%Y-%m-%d %H:%M:%S').replace(tzinfo=timezone(timedelta(hours=8)))
  # 北京时间
  bj_datetime = utc_datetime.astimezone(timezone(timedelta(hours=8)))
  # 东京时间
  dj_datetime = bj_datetime.astimezone(timezone(timedelta(hours=9)))

  下面的就是代码,testDatetime.py:

# coding=utf-8

"""
testDatetime.py
datetime模块练习
"""
import unittest
from datetime import datetime, timedelta, timezone class TestDatetime(unittest.TestCase): def test_get_datetime(self):
"""指定日期和时间datetime"""
expected = "2017-02-22 16:05:26"
actual = datetime(2017,2,22,16,5,26)
# print(actual)
self.assertEqual(expected, str(actual)) def test_datetime_translation_timestamp(self):
"""将datetime转化成timestamp,返回的是秒"""
expected = 1487750726.0
actual = datetime(2017,2,22,16,5,26).timestamp()
# print(type(actual))
self.assertEqual(expected, actual) def test_timestamp_translation_datetime(self):
"""将timestamp转化成datetime格式"""
expected = "2017-02-22 16:05:26"
actual = datetime.fromtimestamp(1487750726.0)
# print(actual)
self.assertEqual(expected, str(actual)) def test_str_translation_datetime(self):
"""将str转化成datetime格式"""
expected = datetime(2017,2,22,16,5,26)
actual = datetime.strptime('2017-02-22 16:05:26', '%Y-%m-%d %H:%M:%S')
# print(actual)
self.assertEqual(expected, actual) def test_datetime_translation_str(self):
"""将datetime转化成str"""
excepted = '2017-02-22 16:05:26'
actual = datetime(2017,2,22,16,5,26).strftime('%Y-%m-%d %H:%M:%S')
# print(type(actual))
self.assertEqual(excepted, actual) def test_datetime_add(self):
"""利用timedelta进行时间相加"""
# 加1小时
excepted1 = datetime.strptime('2017-02-22 17:05:26', '%Y-%m-%d %H:%M:%S')
actual1 = datetime.strptime('2017-02-22 16:05:26', '%Y-%m-%d %H:%M:%S') + timedelta(hours=1)
# 加2天,10小时
excepted2 = datetime.strptime('2017-02-25 02:05:26', '%Y-%m-%d %H:%M:%S')
actual2 = datetime.strptime('2017-02-22 16:05:26', '%Y-%m-%d %H:%M:%S') + timedelta(hours=10, days=2) self.assertEqual(excepted1, actual1)
self.assertEqual(excepted2, actual2) def test_datetime_plus(self):
"""利用timedelta进行时间相减"""
# 减1小时
excepted1 = datetime.strptime('2017-02-22 16:05:26', '%Y-%m-%d %H:%M:%S')
actual1 = datetime.strptime('2017-02-22 17:05:26', '%Y-%m-%d %H:%M:%S') - timedelta(hours=1)
self.assertEqual(excepted1, actual1) def test_timezone_translation(self):
"""转换时区"""
utc_datetime = datetime.strptime('2017-02-22 17:05:26', '%Y-%m-%d %H:%M:%S').replace(tzinfo=timezone(timedelta(hours=8)))
# 北京时间
bj_datetime = utc_datetime.astimezone(timezone(timedelta(hours=8)))
# 东京时间
dj_datetime = bj_datetime.astimezone(timezone(timedelta(hours=9)))
# print(dj_datetime)
self.assertEqual((bj_datetime + timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S'), dj_datetime.strftime('%Y-%m-%d %H:%M:%S')) if __name__ == '__main__':
unittest.main()

  还有测试结果图(全部测试通过):

Python,datetime模块实例的更多相关文章

  1. python datetime模块strptime/strptime format常见格式命令_施罗德_新浪博客

    python datetime模块strptime/strptime format常见格式命令_施罗德_新浪博客     python datetime模块strptime/strptime form ...

  2. python datetime模块参数详解

    Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块,它提供 的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接 ...

  3. Python datetime模块的介绍

    datetime模块常用的主要有下面这四个类:(要清楚import datetime : 导入的是datetime这个包,包里有各种类) 1. datetime.date   用于表示年月日构成的日期 ...

  4. python——datetime模块

    一.datetime模块介绍 (一).datetime模块中包含如下类: 类名 功能说明 date 日期对象,常用的属性有year, month, day time 时间对象 datetime 日期时 ...

  5. Python datetime模块的datetime类

    datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day. datetime.time:表示时间的类.常用的属性有hour, m ...

  6. Python 日志模块实例

    python 打印对象的所有属性值: def prn_obj(obj):     print '\n'.join(['%s:%s' % item for item in obj.__dict__.it ...

  7. python datetime模块详解

    datetime是python当中比较常用的时间模块,用于获取时间,时间类型之间转化等,下文介绍两个实用类. 一.datetime.datetime类: datetime.datetime.now() ...

  8. Python: json模块实例详解

    ref:https://www.jianshu.com/p/e29611244810 https://www.cnblogs.com/qq78292959/p/3467937.html https:/ ...

  9. python datetime模块

    该模块的时间有限时限:1 - 9999 dir(datetime)  from datetime import datetime, timedelta, timezone dt = datetime. ...

随机推荐

  1. 关于Android反编译

    详情查看:http://blog.csdn.net/ordinaryjoe/article/details/8626010

  2. IOS开发-UI学习-UITextField的具体属性及用法

    直接上代码,里面有各种属性的用法注释,至于每个属性有多个可以设置的值,每个值的效果如何,可以通过查看这个函数参数的枚举量,并逐一测试. //制作登陆界面 #import "ViewContr ...

  3. 利用python 实现微信公众号群发图片与文本消息功能

    在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_token.如下: #获取微信access_token def get_token(): paylo ...

  4. 我对CSS中的BFC的理解

       1.什么是BFC 其实在老师让我们写这篇叫BFC的时候,我跟本不知道有什么BFC的东西. 后来,我找了一些资料,知道了,BFC是Block Formatting Context (块级格式化上下 ...

  5. 勘误《iOS网络高级编程:iPhone和iPad的企业应用开发》

    VII页 , 倒数第二行, “其他” 应为 “其它” X页, 源代码有错误,说是有19章,实际一共13章 XI页,勘误表的链接也是错误的  .是该书的<Beginning ASP.NET 4.5 ...

  6. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  7. yum网络源配置

    [root@xuegod60 ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak[root@x ...

  8. vijos P1001 谁拿了最多奖学金

    vijos P1001 谁拿了最多奖学金 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(&g ...

  9. wince开发环境搭建与全套教程

    http://www.cnblogs.com/zhchongyao/archive/2010/12/28/1919176.html http://blog.csdn.net/weiren2006/ar ...

  10. TCP&UDP

    TCP(传输控制协议) 建立连接,形成传输数据的通道 在连接中进行大数据传输(数据大小不受限制) 通过三次握手完成连接,是可靠协议,安全送达(三次握手向服务器发送请求,响应请求回复,发送数据) 必须建 ...