Python3教程:在python/Shell/MySQL中时间获取与格式转换的方法总结

时间的获取及时间各格式间的转换是比较常用的操作,但一是多种语言经常容易弄混,二是同一种语言同一个功能可能有不同的实现函数,导致每次处理时间经常要百度所以来记录一下。

另外个人真不喜欢同样功能有多种写法的形式,从理想角度说多种实现方式让不同的人都能以其喜欢的方式进行编写;但实际上当你忘记的时候,你就总要怀疑是不是这么写、可不可以这么写、到底怎么写,然后到网上看又是五花八门的写法,这是个很耗费精力的事情。这也是我不喜欢Ruby的原因。

一、Python时间操作

1 获取时间对象

import time
import datetime

# 获取当前时间对象
# 返回形如datetime.datetime(2020, 2, 29, 10, 34, 36, 799216)对象
# 可通过对象的year、month、day、hour、minute、second、microsecond、tzinfo等属性获取各部分的信
datetime.datetime.now()
datetime.datetime.today()

# 获取昨天时间对象。当前时间减去一天的时间差即可
# 接受参数weeks,days,hours,seconds,minutes,microseconds,milliseconds,且可同时使用
# 返回形如datetime.datetime(2020, 2, 28, 10, 37, 31, 470867)
datetime.datetime.now() - datetime.timedelta(days=1)

# 获取明天时间对象。当天的时间加上一天的时间差即可
# 接受参数weeks,days,hours,seconds,minutes,microseconds,milliseconds,且可同时使用
# 返回形如datetime.datetime(2020, 3, 1, 10, 37, 31, 470867)
datetime.datetime.now() - datetime.timedelta(days=1)

2 时间对象与给定格式转换

import time
import datetime

# 时间对象输出成指定格式
# 输出形如2020-02-29 11:03:29(-空格和:等符号可以换成其他任意自己想要的字符)
obj = datetime.datetime.now()
obj.strftime("%Y-%m-%d %H:%M:%S")
obj.__format__("%Y-%m-%d %H:%M:%S")

# 给定时间转成时间对象
datetime.datetime.strptime("2020-02-29 11:03:29", "%Y-%m-%d %H:%M:%S")

3 时间对象与时间戳转换

import time
import datetime

# 时间对象转成时间戳
# 结果形如1582943851.470867
obj = datetime.datetime.now()
obj.timestamp()

# 时间戳转成时间对象
datetime.datetime.fromtimestamp(time.time())

4 时间的比较

import time
import datetime

# 单纯地比较大小可以直接比较。
# 执行太快了两个对象是一样的,所以睡眠一下
obj_a = datetime.datetime.now()
time.sleep(1)
obj_b = datetime.datetime.now()
if obj_b > obj_a:
    print("yes")

# 要获取具体时间差,可将转成时间戳再相减
obj_a = datetime.datetime.now()
time.sleep(1)
obj_b = datetime.datetime.now()
if obj_b > obj_a:
    late = obj_b.timestamp() - obj_a.timestamp()
    print(f"obj_b is late than b: {late}")

二、Shell时间操作

1 基础操作

# 获取当前时间,并输出成指定格式
# 有引号是因为有空格,没有空格用不用引号都一样
date +"%Y-%m-%d %H:%M:%S"

# 获取昨天时间,并输出成指定格式
date -d "yesterday" +"%Y-%m-%d %H:%M:%S"
date -d "last-day" +"%Y-%m-%d %H:%M:%S"
date -d "1 day ago" +"%Y-%m-%d %H:%M:%S"
date -d "-1 days" +"%Y-%m-%d %H:%M:%S"

# 获取明天日期,并输出成指定格式
date -d "tomorrow" +"%Y-%m-%d %H:%M:%S"
date -d "next-day" +"%Y-%m-%d %H:%M:%S"
date -d "+1 days" +"%Y-%m-%d %H:%M:%S"

# 将给定日期输出成指定格式
date -d "2020-07-22 09:09:09" +"%H:%M:%S %Y-%m-%d"# 将timestamp转成指定日期格式date -d @1640162812  +"%Y-%m-%d %H:%M:%S"

2 date月份设置成中/英文问题

%b表示以系统所设置语言的月份简写,如"Aug";%B当地语言全称,如"August"。

但这个“系统设置语言”到底是由哪个配置设置呢?之前以为是LANG,LANG设置成"zh_CN.UTF-8"就是中文,date +"%b"就会输出“8月”;设置成"en_US.UTF-8"就是英文,date +"%b"就会输出“Aug”。

之前也收到反馈说LANG设置成了"en_US.UTF-8",date +"%b"仍输出中文“8月”,并不太上心,但今天自己也遇到了这个情况。

通过查找资料和实验,发现环境变量的优先级是LC_ALL > LC_*(包括决定月分显示语言的LC_TIME)> LANG。所以当LC_ALL设置成"zh_CN.UTF-8"时去设置LANG为"en_US.UTF-8",date +"%b"仍输出中文。

# 月份以英文形式输出。%b缩写,%B全称
LC_ALL=C date -d "2020-07-22 09:09:09" +"%b"

# 查看各影响编码的环境变量的当前值
locale

# 查看系统支持的全部编码
locale -a

三、MySQL时间操作

1 MySQL获取时间

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 获取当天日期
select curdate();
获取昨天日期
select date_sub(curdate(),interval 1 day);
获取明天日期
select date_sub(curdate(),interval -1 day);

# 获取当前时间
select now();
# 获取一个小前时间
select date_sub(now(),interval 1 hour);
# 获取一个小时后时间
select date_sub(now(),interval -1 hour);
# 获取昨天时间
select date_sub(now(),interval 1 day);
# 获取明天时间
select date_sub(now(),interval -1 day);

2 时间输出成指定格式

# 当前时间输出成给定格式
select date_format(now(),"%Y%m%d %H:%i:%S");

# 给定时间输出成指定格式
select date_format(date_sub(curdate(),interval 1 day),"%Y%m%d");
select date_format(date_sub(now(),interval 1 hour),"%Y%m%d %H:%i:%S");

3 获取时间戳

select unix_timestamp(now());

四、附Python时间格式

Python、Shell、MySQL之间格式虽然大多是相同的,但小部分还是有区别,自己使用时要注意。比如分钟Python和Shell是"%H",但MySQL是"%i"。
在这里插入图片描述

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3教程:在python/Shell/MySQL中时间获取与格式转换的方法总结 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Python教程:IO

    在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。 1.读文件 要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标…

    Python开发 2023年3月31日
    00
  • 5个非常有意思的python代码,谁运行谁知道

    Python 能做很多无聊,但有意思的事情,例如接下来的一些案例。 Python 整蛊程序 以下程序,不要发代码,要不实现不了你整蛊的目的。 要打包成一个 exe 程序,发给朋友才有意思。 使用 pip install pyinstaller。 打包命令如下: pyinstaller -F 文件名.py 过程中如果出现 BUG(一般是编码错误),点击导航查看…

    Python开发 2023年4月2日
    00
  • python中argparse模块的用法

    argparse 模块 一个可执行文件或者脚本都可以接收参数。 $ ls -l /etc /etc 是位置参数 -l 是短选项 如何把这些参数传递给程序呢?从3.2开始Python提供了功能强大的参数分析的模块argparse。 1.参数分类 参数分为: 位置参数,参数放在那里,就要对应一个参数位置。例如/etc就是对应一个参数位置。 选项参数,必须通过前面…

    Python开发 2023年3月31日
    00
  • Python中struct 模块的使用教程

    1.struct 简单介绍 struct 是 Python 的内置模块, 在使用 socket 通信的时候, 大多数据的传输都是以二进制流的形式的存在, 而 struct 模块就提供了一种机制, 该机制可以将某些特定的结构体类型打包成二进制流的字符串然后再网络传输,而接收端也应该可以通过某种机制进行解包还原出原始的结构体数据 2.struct 的使用 str…

    python 2023年4月18日
    00
  • Python生成随机数的一个标准库-random

    1.介绍 Random库Python中用于生成随机数的一个标准库。计算机没有办法产生真正的随机数,但它可以产生伪随机数。 伪随机数是计算机按照一定的运算规则产生的一些数据,只不过这些数据表现为随机数的形式。计算机中采用梅森旋转算法生成为随机序列,序列中的每一个元素就是伪随机数,由于计算机不能产生真正的随机数,所以伪随机数也就被称为随机数。 Random库包含…

    python 2023年4月27日
    00
  • python学习:各种推导式玩法-推导式套路

    1.推导式套路 除了最简单的列表推导式和生成器表达式,其实还有字典推导式、集合推导式等等。 下面是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式。 variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res:  列表生成元素表达式,可以是有返回值的函…

    Python开发 2023年4月2日
    00
  • Python教程:读取文件有三种方法:(read、readline、readlines)详细用法

    python3中,读取文件有三种方法:read()、readline()、readlines()。 此三种方法,均支持接收一个变量,用于限制每次读取的数据量,但是,通常不会使用。 本文的目的:分析、总结上述三种读取方式的使用方法及特点。 一、read方法 特点:读取整个文件,将文件内容放到一个字符串变量中。 缺点:如果文件非常大,尤其是大于内存时,无法使用r…

    Python开发 2023年4月2日
    00
  • Python重用父类方法

    一、重用父类方法 1 与继承没有关系的重用 指名道姓的使用 在子类里想用父类的方法,我们可以直接用父类名.方法名()—>父类里方法有几个参数就传几个参数 我们看起来是子类在调用父类的方法,但是实际上,这并没有存在继承关系 class A: def __init__(self,name,age): self.name=name self.age=ag…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部