一篇文章带你详细了解python中一些好用的库

目录
  • 时间库—arrow
    • 使用背景
    • 安装arrow
    • arrow使用
    • 游标卡尺shift
    • 获取arrow对象
    • arrow的类型转换和时区修改
  • 总结

时间库—arrow

使用背景

日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,Python 也不例外。但是,你知道在Python中有多少个相关的模块吗?datetime、time、calendar、 dateutil、 pytz 等等。 你知道有多少种数据类型吗?date、time、datetime、tzinfo、timedelta 等等。

博主在一次需求中遇到需要统计近几个月间的数据,前端传给我的是当前的时间戳,要通过时间戳来往前推三个月,或者四个月,半年的时间,如果只能通过加减时间的话就会变得很麻烦,所以想到了使用python的时间库----arrow

在介绍时间库之前,我们来看一看python的各个时间格式间是如何转换的

不管怎样,你终究还是要熟练这些模块和API操作的,记不住没关系,至少你都要手动敲几遍,下次遇到时要能做到翻看文档能快速定位到某个类某个方法是做什么用、怎么用。

但今天我要强烈安利给你的这个时间日期库:Arrow。它的灵感来自于 requests 库。将所有繁杂的东西全部隐藏于身后,留给你的是 for humans 接口。充分诠释了 keep it simple and stupid 这句话的含义。

安装arrow

pip install arrow

arrow使用

  • 获取当前时间

  • 获取不同时间格式

游标卡尺shift

这个是arrow中我认为最好用的一个属性,他可以让你随便将时间进行向前或者向后的推移,基本可以满足你所有关于时间上推算的操作,抓紧用起来吧

  • 向后推算时间

  • 向前推算时间

  • humanize

humanize 方法是相对于当前时刻表示为“多久以前”的一种可读行字符串形式,默认是英文格式,指定 locale 可显示相应的语言格式。

  • format

获取arrow对象

  • get方法是最好用的获取arrow对象的方式
# 不带参数,等价与 utcnow()
>>> arrow.get()
<Arrow [2018-08-24T07:11:50.528742+00:00]>
# 接受时间戳参数
>>> arrow.get(1535113845)
# 接受一个datetime对象
>>> arrow.get(datetime(2018,8,24))
<Arrow [2018-08-24T00:00:00+00:00]>
# 接收一个date对象
>>> from datetime import date
>>> arrow.get(date(2018,7,24))
<Arrow [2018-07-24T00:00:00+00:00]>
# 接收日期格式的字符串
>>> arrow.get("2018-08-11 12:30:56")
<Arrow [2018-08-11T12:30:56+00:00]>
# 接收日期字符串,并指定格式
>>> arrow.get("18-08-11 12:30:56", "YY-MM-DD HH:mm:ss")
<Arrow [2018-08-11T12:30:56+00:00]>

arrow的类型转换和时区修改

# 字符串转时间
print(arrow.get('2017-10-28T00:00:00+0800'))
# print(arrow.get('2017-10-28', 'YYYY-MM-DD'))  # 字符串转时间(不推荐这样用,没有设时区)
print(arrow.get('2017-10-28', 'YYYY-MM-DD', tzinfo='local'))  # (推荐)
print(arrow.get('2017-10-28', 'YYYY-MM-DD', tzinfo='Asia/Shanghai'))  # 这样也可以
print(arrow.get('2017-10-28 05:30:30', 'YYYY-MM-DD HH:mm:ss', tzinfo='local'))  # (推荐)
print('-------------')

# 时间戳
print(local.timestamp)  # 时间戳
print(arrow.get('1509120000', tzinfo='local'))  # 时间戳字符串,转换为本时区的时间

# 时间转为字符串,输出(格式化)
print(local.format("YYYY-MM-DD"))
print(local.format("YYYY-MM-DD HH:mm:ss"))
print(local.replace(minutes=-1).humanize(locale='zh'))  # 本地化个性时间短语: 刚才,1分钟前,1天前,等  (zh_tw  更多语言的支持,去查看arrow/locales.py)

python的arrow库的使用暂时介绍到这里,下篇介绍python处理数据的pandas库,让你能够轻松的处理python中复杂而海量的数据。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python数据库如何连接SQLite详解

    目录 1. 建立与SQLite数据库的连接 1.1 建立基于内存的数据库 1.2 建立基于硬盘的数据库 1.3 基于内存和基于硬盘的区别 2. 在指定数据库里建立表结构 2.1 建立数据库表结构 2.2 查找数据 2.3 删除数据 总结 1. 建立与SQLite数据库的连接 SQLite是python自带的一款基于内存或硬盘的.开源的.关系型的轻量级数据库.这意味着无需下载安装SQLite数据库产品和对应的数据库驱动程序,可以被python语言以模块导入方式直接调用.其位置在python的安装路

  • Python 数据科学 Matplotlib图库详解

    Matplotlib 是 Python 的二维绘图库,用于生成符合出版质量或跨平台交互环境的各类图形. 图形解析与工作流 图形解析 工作流 Matplotlib 绘图的基本步骤: 1  准备数据 2  创建图形 3 绘图 4 自定义设置 5 保存图形 6 显示图形 import matplotlib.pyplot as plt x = [1,2,3,4] # step1 y = [10,20,25,30] fig = plt.figure() # step2 ax = fig.add_subpl

  • Python heapq库案例详解

    Python heapq heapq 库是 Python 标准库之一,提供了构建小顶堆的方法和一些对小顶堆的基本操作方法(如入堆,出堆等),可以用于实现堆排序算法. 堆是一种基本的数据结构,堆的结构是一棵完全二叉树,并且满足堆积的性质:每个节点(叶节点除外)的值都大于等于(或都小于等于)它的子节点. 堆结构分为大顶堆和小顶堆,在 heapq 中使用的是小顶堆: 大顶堆:每个节点(叶节点除外)的值都大于等于其子节点的值,根节点的值是所有节点中最大的. 小顶堆:每个节点(叶节点除外)的值都小于等于其

  • python中的tkinter库弹窗messagebox详解

    〝 古人学问遗无力,少壮功夫老始成 〞 python之tkinter库弹窗messagebox,常码字不易,出精品更难,没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉.你必须特别努力,才能显得毫不费力.如果这篇文章能给你带来一点帮助,希望给飞兔小哥哥一键三连,表示支持,谢谢各位小伙伴们. Tkinter 是 Python 自带的图形界面库,库中包含众多图形界面控件,包括 Lable 标签.Button按钮.Radiobutton单选框.Checkbutton复选框.

  • python数据可视化plt库实例详解

    先看下jupyter和pycharm环境的差别 左边是jupyter----------------------------------------------------------右边是pycharm 以下都是使用pycharm环境 1.一个窗口画出一个线性方程 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,1,11)# 从0到1,个数为11的等差数列 print(x) y = 2*x plt.plo

  • python实现图像处理之PiL依赖库的案例应用详解

    Python实现图像处理:PiL依赖库的应用 本文包含的练习题主要是PIL依赖库,即pillow相关的应用. 练习一:使用python给图片增加数字 实现思路: 使用PIL的Image.open导入图片. 获取图片的大小. 调用ImageDraw,在图片的指定位置写上数字. #coding=utf-8 #Auther by Alice #在图片的右上角增加一个数字 from PIL import Image,ImageFont,ImageDraw image = Image.open('/Use

  • 一篇文章带你详细了解python中一些好用的库

    目录 时间库-arrow 使用背景 安装arrow arrow使用 游标卡尺shift 获取arrow对象 arrow的类型转换和时区修改 总结 时间库-arrow 使用背景 日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,Python 也不例外.但是,你知道在Python中有多少个相关的模块吗?datetime.time.calendar. dateutil. pytz 等等. 你知道有多少种数据类型吗?date.time.datetime.tzinfo.timed

  • 一篇文章带你顺利通过Python OpenCV入门阶段

    目录 1. OpenCV 初识与安装 2. OpenCV 模块简介 3. OpenCV 图像读取,显示,保存 4. 摄像头和视频读取,保存 5. OpenCV 常用数据结构和颜色空间 6. OpenCV 常用绘图函数 7. OpenCV 界面事件操作之鼠标与滑动条 8. 图像像素.通道分离与合并 9. 图像逻辑运算 10. 图像 ROI 与 mask 掩膜 11. 图像几何变换 12. 图像滤波 13. 图像固定阈值与自适应阈值 14. 图像膨胀腐蚀 15. 边缘检测 16. 霍夫变换 17.

  • 一篇文章带你搞定Python多进程

    目录 1.Python多进程模块 2.Python多进程实现方法一 3.Python多进程实现方法二 4.Python多线程的通信 5.进程池 1.Python多进程模块 Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Process对象来创建一个进程对象.这个进程对象的方法和线程对象的方法差不多也有start(), run(), join()等方法,其中有一个方法不同Thread线

  • 一篇文章带你搞懂Python类的相关知识

    一.什么是类 类(class),作为代码的父亲,可以说它包裹了很多有趣的函数和方法以及变量,下面我们试着简单创建一个吧. 这样就算创建了我们的第一个类了.大家可以看到这里面有一个self,其实它指的就是类aa的实例.每个类中的函数只要你不是类函数或者静态函数你都得加上这个self,当然你也可以用其他的代替这个self,只不过这是python中的写法,就好比Java 中的this. 二.类的方法 1.静态方法,类方法,普通方法 类一般常用有三种方法,即为static method(静态方法),cl

  • 一篇文章带你搞定SpringBoot中的热部署devtools方法

    一.前期配置 创建项目时,需要加入 DevTools 依赖 二.测试使用 (1)建立 HelloController @RestController public class HelloController { @GetMapping("/hello") public String hello(){ return "hello devtools"; } } 对其进行修改:然后不用重新运行,重新构建即可:只加载变化的类 三.热部署的原理 Spring Boot 中热部

  • 一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃

    由于 Ubuntu 中的汉字输入实在是太不友好了,所以装了个 搜狗输入法,好不容易把 搜狗输入法装好,本以为可以开开心心的搞代码了,然而... pycharm 一打开,就崩溃,关不掉,进程杀死还是不行,只能关机重启. 本以为 pycharm 出现了问题,又重装了两遍,还是不行. 最终发现竟然是搜狗输入法以及 fcitx 输入法的锅 唉,只能老老实实的把 fctix 和搜狗输入法卸载了: (1)Ubuntu 软件里卸载 fctix,然后将键盘输入法系统改成 IBus (2)卸载搜狗输入法 先查找软

  • 一篇文章带你实现C语言中常用库函数的模拟

    目录 前言 函数介绍 strlen(求字符串长度) strcpy(字符串拷贝) strcat(字符串追加) strcmp(字符串比较) strstr(找子字符串) memcpy(内存拷贝) memmove(内存移动) 总结 前言 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中. 字符串常量适用于那些对它不做修改的字符串函数. 函数介绍 strlen(求字符串长度) size_t strlen ( const char * str

  • 一篇文章带你详细了解JavaScript数组

    目录 一.数组的作用: 二.数组的定义: 1.通过构造函数创建数组 2.通过字面量的方式创建数组 三.数组元素 四.数组长度 五.数组索引(下标) 六.数组注意的问题 1.数组中存储的数据可以是不一样的 2.数组的长度是可以改变的 3.总之 七.遍历数组 1.正序遍历 2.倒序遍历 八.数组中常见的案例 1.求数组中所有元素的和 2.求数组的平均数 3.求数组的最大值和最小值 4.冒泡排序 总结 数组:是一组有序的数据 一.数组的作用: 可以一次性存储多个数据 二.数组的定义: 1.通过构造函数

  • 一篇文章带你深入学习Python函数

    目录 函数的特性: 函数是对象: 函数可以删除: 总结 函数的特性: 函数是对象 函数可以删除 函数名字和函数本身完全是分开的 函数因为是对象,可以结合数据结构使用 函数因为是对象,可以作为函数参数 函数因为是对象,可以在嵌套在函数体内 内层函数对象能够记忆住父函数的变量 所有的函数都是对象,但是所有的对象并不一定都是函数 对象成为函数需要实现__call__协议 函数是对象: # 函数是对象:支持赋值操作. def test1(n): print(f"hello, {n}!") #

  • 一篇文章带你了解Java中ThreadPool线程池

    目录 ThreadPool 线程池的优势 线程池的特点 1 线程池的方法 (1) newFixedThreadPool (2) newSingleThreadExecutor (3) newScheduledThreadPool (4) newCachedThreadPool 2 线程池底层原理 3 线程池策略及分析 拒绝策略 如何设置maximumPoolSize大小 ThreadPool 线程池的优势 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些

随机推荐