转:python时间日期处理小结

PYTHON-基础-时间日期处理小结

好久没写文了, 继续清理笔记, 都是一些小结之类的, 源码分析以及在做系统中一些细节难点等, 后续逐步发

另外打个广告, 甜品礼物, 坐标深圳, 有兴趣的同学可以给我发邮件, 非python职位会转到对应同事:)

      _       _       _   _
     | |     | |     | | (_)
   __| | __ _| |_ ___| |_ _ _ __ ___   ___
  / _` |/ _` | __/ _ \ __| | ‘_ ` _ \ / _  | (_| | (_| | ||  __/ |_| | | | | | |  __/
  \__,_|\__,_|\__\___|\__|_|_| |_| |_|\___|


原则, 以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理

步骤:

1. 掌握几种对象及其关系
2. 了解每类对象的基本操作方法
3. 通过转化关系转化

涉及对象

1. datetime

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2015, 1, 12, 23, 9, 12, 946118)
>>> type(now)
<type ‘datetime.datetime‘>

2. timestamp

>>> import time
>>> time.time()
1421075455.568243

3. time tuple

>>> import time
>>> time.localtime()
time.struct_time(tm_year=2015, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=10, tm_sec=30, tm_wday=0, tm_yday=12, tm_isdst=0)

4. string

>>> import datetime
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
‘2015-01-12 23:13:08‘

5. date

>>> import datetime
>>> datetime.datetime.now().date()
datetime.date(2015, 1, 12)

datetime基本操作

1. 获取当前datetime

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2015, 1, 12, 23, 26, 24, 475680)

2. 获取当天date

>>> datetime.date.today()
datetime.date(2015, 1, 12)

3. 获取明天/前N天

明天

>>> datetime.date.today() + datetime.timedelta(days=1)
datetime.date(2015, 1, 13)

三天前

>>> datetime.datetime.now()
datetime.datetime(2015, 1, 12, 23, 38, 55, 492226)
>>> datetime.datetime.now() - datetime.timedelta(days=3)
datetime.datetime(2015, 1, 9, 23, 38, 57, 59363)

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

>>> datetime.datetime.combine(datetime.date.today(), datetime.time.min)
datetime.datetime(2015, 1, 12, 0, 0)
>>> datetime.datetime.combine(datetime.date.today(), datetime.time.max)
datetime.datetime(2015, 1, 12, 23, 59, 59, 999999)

5. 获取两个datetime的时间差

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

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

本周

>>> today = datetime.date.today()
>>> today
datetime.date(2015, 1, 12)
>>> sunday = today + datetime.timedelta(6 - today.weekday())
>>> sunday
datetime.date(2015, 1, 18)

本月

>>> import calendar
>>> today = datetime.date.today()
>>> _, last_day_num = calendar.monthrange(today.year, today.month)
>>> last_day = datetime.date(today.year, today.month, last_day_num)
>>> last_day
datetime.date(2015, 1, 31)

获取上个月的最后一天(可能跨年)

>>> import datetime
>>> today = datetime.date.today()
>>> first = datetime.date(day=1, month=today.month, year=today.year)
>>> lastMonth = first - datetime.timedelta(days=1)

关系转换

几个关系之间的转化

Datetime Object / String / timestamp / time tuple

关系转换例子

datetime <=> string

datetime -> string

>>> import datetime
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
‘2015-01-12 23:13:08‘

string -> datetime

>>> import datetime
>>> datetime.datetime.strptime("2014-12-31 18:20:10", "%Y-%m-%d %H:%M:%S")
datetime.datetime(2014, 12, 31, 18, 20, 10)

datetime <=> timetuple

datetime -> timetuple

>>> import datetime
>>> datetime.datetime.now().timetuple()
time.struct_time(tm_year=2015, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=17, tm_sec=59, tm_wday=0, tm_yday=12, tm_isdst=-1)

timetuple -> datetime

timetuple => timestamp => datetime [看后面datetime<=>timestamp]

datetime <=> date

datetime -> date

>>> import datetime
>>> datetime.datetime.now().date()
datetime.date(2015, 1, 12)

date -> datetime

>>> datetime.date.today()
datetime.date(2015, 1, 12)
>>> today = datetime.date.today()
>>> datetime.datetime.combine(today, datetime.time())
datetime.datetime(2015, 1, 12, 0, 0)
>>> datetime.datetime.combine(today, datetime.time.min)
datetime.datetime(2015, 1, 12, 0, 0)

datetime <=> timestamp

datetime -> timestamp

>>> now = datetime.datetime.now()
>>> timestamp = time.mktime(now.timetuple())
>>> timestamp
1421077403.0

timestamp -> datetime

>>> datetime.datetime.fromtimestamp(1421077403.0)
datetime.datetime(2015, 1, 12, 23, 43, 23)

版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

如果我的文章或项目对你有所帮助, 可以扫码进行小额捐赠
如果有主机需求, 可点下方vultr进入注册, 带小尾巴:)
如果要加广告位, 请邮件联系

上一篇: Linux及Bash笔记下一篇: 2014, 在变化与坚持中前进

COPYRIGHT ? 2015 WKLKEN 
HOSTED ON VULTR. POWERED BY PELICAN. SOCIAL ICONS BY FONT-AWESOME.

关系转换例子

时间: 2024-08-24 01:29:40

转:python时间日期处理小结的相关文章

Python-基础-时间日期处理小结

Python-基础-时间日期处理小结 涉及对象 1. datetime 2. timestamp 3. time tuple 4. string 5. date datetime基本操作 1. 获取当前datetime 2. 获取当天date 3. 获取明天/前N天 4. 获取当天开始和结束时间(00:00:00 23:59:59) 5. 获取两个datetime的时间差 6. 获取本周/本月/上月最后一天 关系转换 关系转换例子 datetime <=> string datetime &l

js 格式化时间日期函数小结

下面是脚本之家为大家整理的一些格式化时间日期的函数代码,需要的朋友可以参考下. 代码如下: Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(

Python 时间日期库 Arrow 的安装使用

Arrow是一个专门处理时间和日期的轻量级Python库,它提供了一种合理.智能的方式来创建.操作.格式化.转换时间和日期.其设计灵感主要来源于moment.js. 为什么要设计Arrow? 从可用性角度来看,Python的标准库和低端模块都提供了完整的功能,但却无法很好地工作,开发者使用起来也比较纠结. 模块太多:日期.时间.日历.datetuil.pytz. 时区和时间戳转换很麻烦,而且容易出错. 时区是显式的,且比较简单 功能差距:ISO-8601解析.时间跨度.不够人性化 核心功能: 实

Python时间日期类型

一.time模块 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. 1)time是归类在Generic Operating System Services中,它提供的功能是更加接近于操作系统层面的.time模块是围绕着Unix Timestamp进行的 2)时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08是00分00秒)起至现在的总秒数,结果是一个浮点数 3)所能表述的日期范围被限定在1970-2038之间 impor

Python时间日期函数讲解

所有日期.时间的api都在datetime模块内. 1. 日期输出格式化 datetime => string import datetime now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S') 输出 '2015-04-07 19:11:21' strftime是datetime类的实例方法. 2. 日期输出格式化 string => datetime import datetime t_str = '2015-04-

Java时间日期处理小结

Java程序模块通常都有自己的公共日期时间处理类,主要实现比如: 时间格式化.获取当前日期的前后某个时间.日期时间比较等功能: 1. 日期格式化 Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String startDate = format.format(date); // 获得格式化后的字符串 2. 日期增减 Date date = new

python-基础-时间日期处理小结(datetime模块)

在写代码的时候,总是会遇到各式各样关于时间的处理和要求.总结一下: 首先,本文是关于datetime模块的各种总结. 开始. 一.datetime基本操作 1.获取当前datetime 1 time = datetime.datetime.now() 2 print time 3 #输出如下日期-时间(精确到微秒,小数点后6位) 4 5 2018-01-11 20:19:34.794000 2.获取当天date 1 time = datetime.date.today() 2 print tim

python 时间日期模块time

参考链接:https://www.runoob.com/python/python-date-time.html 时间戳 >>> print(time.time())#别输成time.time 1556983197.7285311 格式化 >>> print(time.strftime("%Y-%m-%d",time.localtime())) 2019-05-04 #还可以 # 格式化成2016-03-20 11:45:39形式 print tim

python操作日期和时间的方法

经常获得了一个用户提交的当前日期,我们需要以这个日期为依据返回它的前一天.后一天的日期或者转换操作等.用Python可以非常简单的解决这些关于日期计算的问题. 不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法. 1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray