一、问题背景

在对数据进行操作的时候我们总是会遇到数据类型是date类型的数据,这种数据会让我们在使用和操作的过程中遇到一些问题,比如int类型和date类型不对等,string类型和date类型不对等的情况。而在对数据库的字段操作的时候我们更是会遇到此问题,因此在此记录一下操作方法,可以在以后的使用中直接将代码copy过来

二、问题描述

在python中使用datetime这个函数来对时间进行操作,结合数据库一起进行操作,主要内容包括:获取时间为datetime类型,string类型如何转变成datetime类型,对时间进行添加和减少等,在方法中会一一指出

模型如下:

三、方法

在datetime对象使用的过程中,如果需要获取时间就是datetime,如果不需要获取时间就是date,作为一个使用的通式

3.1 获取当前的日期和时间

代码

import datetime

print(datetime.datetime.today())  # 可以使用today
print(datetime.datetime.now()) # 也可以使用now获取

结果

3.2 获取当前的日期

代码

import datetime

print(datetime.date.today())  # 获取当前的日期

结果

3.3 对时间进行增加

3.3.1 添加天数

代码

import datetime

print(f"当前的时间:{datetime.date.today()}")
print(f"我是day:{datetime.date.today() + datetime.timedelta(days=1)}") # 增加一天的时间

结果

3.3.2 增加周数

代码

import datetime

print(f"当前的时间:{datetime.date.today()}")
print(f"我是week:{datetime.date.today() + datetime.timedelta(weeks=1)}")

结果

3.3.3 其他参数

通过查阅源码可以看到能够添加的参数,当然在date的对象下面添加的时间和分钟数是无法查看到的,需要使用datetime来进行查看

3.4 字符转成时间

使用strptime将指定的字符串转换成对应的时间对象,通过下述的结果可以看到,使用的时候进行对应来进行解析,%在SQL语句和时间中是一个标识符,作为数据的拆分结果

import datetime

str_time_0 = '2019/1/3:19/21'
str_time_1 = '2019-1-3:19/21'
str_time_2 = '2019/1/319/21'
str_time_3 = '2019/1/3:19-21'
x_0 = datetime.datetime.strptime(str_time_0, '%Y/%m/%d:%H/%M')
x_1 = datetime.datetime.strptime(str_time_1, '%Y-%m-%d:%H/%M')
x_2 = datetime.datetime.strptime(str_time_2, '%Y/%m/%d%H/%M')
x_3 = datetime.datetime.strptime(str_time_3, '%Y/%m/%d:%H-%M')

结果

3.5 时间转字符

从结果中可以看到,strftime是一个输出的格式,只需要指定其输出的格式就可以,有一点值得注意的是不能使用%,否则就会出现无法识别的错误

import datetime

y_0 = datetime.date.today()
str_time_0 = y_0.strftime("%Y-%m-%d %H:%M")
str_time_1 = y_0.strftime("%Y&%m&%d %H-%M")
str_time_2 = y_0.strftime("%Y/%m/%d-%H:%M")
print(str_time_0)
print(str_time_1)
print(str_time_2)

结果

四、实例

在数据库开发的过程中使用F查询来增加时间,可以达到快速高效的方法,如果使用原生的数据库对象就要注意timestamp的使用其使用方法和datetime一样,他的对象是time

五、总结

对于时间对象可以直接使用strftime来转成我们所需要的string的格式,对于string对象我们可以使用strptime转换成我们所需要的时间格式。举例了集中常用的时间操作方法和操作对象的手段

python操作时间的更多相关文章

  1. [py]GTM和UTC及python的时间戳

    时间戳是一串字符串 time.time() 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数.通俗的讲, 时间戳是一 ...

  2. python之进程与线程

    什么是操作系统       可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...

  3. python高级之多线程

    python高级之多线程 本节内容 线程与进程定义及区别 python全局解释器锁 线程的定义及使用 互斥锁 线程死锁和递归锁 条件变量同步(Condition) 同步条件(Event) 信号量 队列 ...

  4. python 模块基础介绍

    从逻辑上组织代码,将一些有联系,完成特定功能相关的代码组织在一起,这些自我包含并且有组织的代码片段就是模块,将其他模块中属性附加到你的模块的操作叫做导入. 那些一个或多个.py文件组成的代码集合就称为 ...

  5. python学习笔记之常用模块(第五天)

    参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...

  6. Python之路,Day9, 进程、线程、协程篇

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  7. python之路-Day10

    操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 ...

  8. python中几个常见的“黑盒子”之 列表list

    python常见的数据类型有:字符串,布尔类型,整数,浮点数,数字,日期,列表,元祖,字典.相信前面6个大家都非常的熟悉,但是对于python的列表,元祖,字典我有时候一直在想其内部的实现是怎么样子的 ...

  9. 180分钟的python学习之旅

    最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...

随机推荐

  1. 红黑树之 原理和算法详细介绍(阿里面试-treemap使用了红黑树) 红黑树的时间复杂度是O(lgn) 高度<=2log(n+1)1、X节点左旋-将X右边的子节点变成 父节点 2、X节点右旋-将X左边的子节点变成父节点

    红黑树插入删除 具体参考:红黑树原理以及插入.删除算法 附图例说明   (阿里的高德一直追着问) 或者插入的情况参考:红黑树原理以及插入.删除算法 附图例说明 红黑树与AVL树 红黑树 的时间复杂度 ...

  2. MySQL的5大引擎及优劣之分

    MySQL提供了多个不同的存储引擎,其中5大引擎有:innodb,myisam,memory,merge,csv. 其中优点有:灾难恢复性好.支持事务.使用行级锁.支持外键关联.支持热备份 缺点如下: ...

  3. CDN加速静态文件访问

    CDN加速静态文件访问 全局调度 缓存技术 内容分发 带宽优化 CDN是Content Delivery Network的缩写,意思是内容分发网络.CDN的作用是把用户需要的内容分发到离用户近的地方, ...

  4. django5-书籍与出版社关联外键

    1.外键相关 一对多的概念 ,这里是一个出版社对应本书籍 ! 设计表使用model models.ForeignKey('关联一', on_delete=models.CASCADE) #给多设置外键 ...

  5. css布局技巧

    CSS用户界面样式 鼠标样式currsor li{ cursor:pointer: } 设置或检索在对象上移动鼠标指针采用何种系统预定义的光标形状 属性值 描述 default 默认 pointer ...

  6. HTML常用标签二

    图像标签和路径 目录文件夹:普通的文件夹,里面存放了我们做页面需要的相关素材,比如html文件,图片等 根目录:打开目录文件夹的第一层就是根目录 路径 相对路径 以引用文件所在位置为参考基础,而建立出 ...

  7. 1-函数返回值-return详解及应用-1

    return 返回值   可以是:数字.字符串.布尔.函数.对象(元素\[]\{}\null).未定义  <script> function fn1(){return 100;} aler ...

  8. Gradle使用的简单了解

    Gradle 认识 参考博客:http://www.enjoytoday.cn/categorys/Gradle gradle是一个用于构建工程的工程配置脚本,它可以很便捷的帮助我们构建管理工程结构, ...

  9. 传入一个Map<String,Long> 返回它按value排序后的结果

    //传入一个Map<String,Long> 返回它按value排序后的结果 sort为正序还是倒序(-1倒序),size为要几条数据 private static Map<Stri ...

  10. SpringBoot与SpringMVC的区别是什么?

    感谢原文出处:https://www.cnblogs.com/javazhiyin/ Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spr ...