关于datetime和time有几个疑惑的

1、datetime.datetime.now()——为什么需要两个datetime才能返回当前时间,同样的time只需要time.localtime()

后来明白了datetime.datetime.now()——前一个datetime是py文件的名字,中间的datetime是类名,now是方法

2、格式化输出“%H%M%S”,同样是格式化输出,为什么一个是datetime.datetime.strftime("%H%M%S"),另一个是time.strftime("%H%M%S",time.localtime())

注意datetime.datetime.strftime是类的方法,注意上图,datetime.datetime.now()返回的是一个datetime的实例化对象。所以可以直接使用datetime.datetime.strftime方法

而time.strftime()是time模块的方法,注意下图,time.localtime()返回的是time.struct_time对象,这个对象是没有strftime的方法自然报错,用法time.strftime(格式,时间)

(后来才发现datetime.datetime.strftime(datetime.datetime.now(), "%H%M%S")一样可以)

注意1、datetime.datetime.strftime(时间,格式)

2、time.strftime(格式,时间)

--------------------------------------我是分割线--------------------------------------

(以下为个人实现)

下面继续说最近需要使用到的找上年同期数的一些方法思路。

使用到datetime.timedelta日期的加减方法,还有calendar.monthrange()获取本月天数的方法

1、首先分别构造

本月1号datetime——date_now = datetime.datetime(year=year, month=month, day=1) # 构造本月1号datetime

本月最后一天的datetime

2、由于timedelta最大只支持到days参数,本月1号减1就是上月的最后一天,就能得到确定的上月值;本月最后一天+1就是下月的第一天

3、不断重复调用,返回对应月份即可

4、没有加上日day的参数,主要是日的不确定性没想明白该怎么弄比较好,比如20160229的上年同期数应该怎么写,如果有思路的伙伴不妨赐教

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# Datetime:2018/7/13 0:54

# Author:Xzs

"""

功能:传入日期类似“201807”格式,年份及月份参数,例如

date_before("201807", year=1, month=7)——返回上年同期7月前的日期,得到“201612”

date_after("201807", year=1, month=6)——返回下年同期6月后的日期,得到“202001”

date_before("201807", year=1, month=0)——上年同期

"""

import datetime

from datetime import timedelta

import calendar

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

# 返回传入日期的上月

def last_one_month(date):

year = int(date[:4])

month = int(date[4:])

date_now = datetime.datetime(year=year, month=month, day=1) # 构造本月1号datetime

date_last_month = date_now - timedelta(days=1) # 上月datetime

return date_last_month.strftime("%Y%m")

# 返回传入日期的下一个月

def next_one_month(date):

year = int(date[:4])

month = int(date[4:])

a, b = calendar.monthrange(year, month) # a,b——weekday的第一天是星期几(0-6对应星期一到星期天)和这个月的所有天数

date_now = datetime.datetime(year=year, month=month, day=b) # 构造本月1号datetime

date_next_month = date_now + timedelta(days=1) # 上月datetime

return date_next_month.strftime("%Y%m")

def date_before(date, year=None, month=None):

print u"%s年%s月前的日期是:" % (year if year else "-", month if month else "-"),

if year >= 1:

month = 12 * year + month

if month > 1:

for m in range(1, month + 1):

new_date = last_one_month(date) # 返回上个月,再以上个月为基础,循环计算得到最终月

date = new_date

elif month == 1:

new_date = last_one_month(date)

elif month == 0:

new_date = date

# 如果不输入参数,默认返回本日期

if year is None and month is None:

new_date = date

print new_date

return new_date

def date_after(date, year=None, month=None):

print u"%s年%s月后的日期是:" % (year if year else "-", month if month else "-"),

if year >= 1:

month = 12 * year + month

if month > 1:

for m in range(1, month + 1):

new_date = next_one_month(date) # 返回下个月,再以下个月为基础,循环计算得到最终月

date = new_date

elif month == 1:

new_date = next_one_month(date)

elif month == 0:

new_date = date

# 如果不输入参数,默认返回本日期

if year is None and month is None:

new_date = date

print new_date

return new_date

if __name__ == '__main__':

# next_day("20180501",day=5)

# last_day("20160301",day=1,year=5)

date_before("201801")

date_after("201807")

(发布后看书后发现,对于大多数基本的日期和时间处理,datetime足够,但如果需要更复杂的日期操作,可以使用dateutil模板)

以下部分为python自带dateutil模块实现年月日的加减,大神造的车子功能基本完善,道行不够未发现,就像车子本来有自动巡航功能,我居然自己找个机械臂去模拟控制,还时不时失灵o(╯□╰)o)

推荐看下《Python Cookbook》第三版中文v3.0.0.pdf,百度自己找资源。新手进阶必备。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# Datetime:2018/8/1 19:09

# Author:Xzs

import datetime

from datetime import timedelta

from dateutil.relativedelta import relativedelta

a = datetime.datetime.now()

b = datetime.datetime.strftime(a, "%H%M%S")

print b

c = relativedelta(years=1,months=1,days=1)

d = relativedelta(years=-1,months=-1,days=-1)

print a + c

python获取日期的年月日_python datetime和time的一些疑惑解答 及 获取上年同期、上月等日期...相关推荐

  1. python中multiindex如何索引_python – MultiIndex DataFrames的Pandas HDFStore:如何有效地获取所有索引...

    在Pandas中,有没有办法以表格格式有效地提取HDFStore中存在的所有MultiIndex索引? 我可以使用where =来有效地选择(),但我想要所有索引,而不是所有列.我也可以选择()使用i ...

  2. python时间模块使用教程_Python datetime模块使用方法小结

    datetime模块 当前日期 datetime.date.today() datetime.date(2020, 4, 24) 转换元祖 >>> datetime.date.tim ...

  3. python百度地图api经纬度_Python调用百度地图和高德地图API批量获取国内城市地址经纬度坐标...

    1 数据准备 经过尝试,百度地图API需要输入城市中文名称才能获取对应经纬度坐标,因此先将英文的城市名称转为中文 一共347个城市 由于在测试过程中发现高德和百度地图API分别有几个城市的地址无法获取 ...

  4. python程序设计第一章答案_Python语言程序程序设计-第一章习题解答

    作为一名非计算机专业毕业的学生,一直想学Python用来解决工作中遇到的问题,但是对计算机一直摸不到好的门路,于是买到了Python语言程序程序设计这本书,用做习题的形式,积累自己的学习成果,相信不怕 ...

  5. python入门题目及答案_Python基础知识的一些练习与解答,python,部分,习题,及,答案...

    习题1 输入一个字符串列表,返回同时满足以下两个条件的字符串的个数: #1.字符串长度大等于2 #2.字符串的第一个字符等于最后一个字符 def match_ends(words): i=0 for ...

  6. HTML获取当前时间年月日时分秒等相关信息

    HTML获取当前时间年月日时分秒等相关信息 [方式一]获取整段时间 <!DOCTYPE html> <html lang="en"> <head> ...

  7. python 日期 间隔_Python datetime time 等时间 日期 之间的计算和相互转化

    from datetime importdatetime, date, timedelta, timezonefrom time importtime, ctime, localtime, strft ...

  8. python读取xlsx文件年月日变成数字_python转化excel数字日期为标准日期操作

    伙伴遇到一个关于excel导入数据到python中,日期变成数字而不是日期格式的问题.第一反应这个数字应该是excel里面的时间戳类似的,所以我就实验增加一天是不是对应的数字就加1.最后证明了我的想法 ...

  9. python格式年月日_python日期格式

    有哪些常用的 Python 标准库? 1.提供了不少与操作系统相关联的函数库os: os包是Python与操作系统的接口.我们可以用os包来实现操作系统的许多功能,比如管理系统进程,改变当前路径(相当 ...

  10. python中年月日_Python中当前年和月的日期时间

    使用:from datetime import datetime current_month = datetime.now().strftime('%m') // 02 //This is 0 pad ...

最新文章

  1. pbp 读取 mysql数据_SqlAlchemy 中操作数据库时session和scoped_session的区别(源码分析)...
  2. 图片来源html,HTML图片(Images)
  3. C++sort如何使用lambda表达式对一维vector和二维vector进行排序
  4. VMware下配置固定ip,于本机进行通信。
  5. 通过在Chipotle用餐了解模板方法设计模式
  6. 用类来实现输入输出时间,定义多个类对象分别输入输出各对象的时间(时:分:秒),使用函数,数据成员不再由键盘输入,而在调用函数时由实参给出,并在函数中使用默认参数
  7. StringBuilder类的对象 c#
  8. java xfire指定参数名_XFire绑定Aegis自定义友好参数(复杂对象)
  9. Ubuntu编译内核及grub的一些笔记
  10. 暮色森林模组_《我的世界》暮色森林VS天启之境 到底谁才是冒险模组一哥
  11. 组合,聚合,关联,依赖 的区别
  12. 【严蔚敏数据结构题集】C/C++编程线性表练习题(一)
  13. 红帽linux镜像下载教程,最新版:如何到Redhat官网下载RedHat镜像及申请试用安装序号...
  14. python xps_XPS 15 9560 安装 Ubuntu 18.04
  15. 特征工程实践:泰坦尼克号幸存者预测
  16. 【夜读】有些人注定不会失败
  17. DM数据库部署dem管理工具(tomcat)
  18. IDEA中如何实现git的cherry-pick可视化操作?
  19. 实战PyQt5: 143-QChart图表之堆积柱状图
  20. 写需求规格说明书/产品定义的个人总结

热门文章

  1. 阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
  2. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_3 基于注解的自定义再分析
  3. 基于Java visualvm的可视化监控的使用
  4. BTrace简介与使用说明
  5. angular.js 验证码注册登录
  6. 实验七——Web应用测试(bookstore项目上完成)
  7. Swift给每个开发者赢取500万的机会!不看一生后悔。
  8. CentOS6.x定制~修改CentOS字样
  9. 移动端的头部标签和meta
  10. Linux部署之批量自动安装系统之测试篇