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

时间的获取和时间格式之间的转换是比较常见的操作,但一是多语言经常混淆,二是相同的语言和功能可能有不同的实现功能。因此,每个处理时间往往都要由百度记录。

[En]

The acquisition of time and the conversion between time formats are more common operations, but one is that multiple languages are often confused, and the other is that the same language and function may have different implementation functions. as a result, each processing time often has to be recorded by Baidu.

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

获取昨天的时间对象。现在的时间减去一天的时差就足够了。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Gets the yesterday time object. The current time minus the time difference of one day is enough.</font>*</details>
接受参数weeks,days,hours,seconds,minutes,microseconds,milliseconds,且可同时使用
返回形如datetime.datetime(2020, 2, 28, 10, 37, 31, 470867)
datetime.datetime.now() - datetime.timedelta(days=1)

获取Tomorrow Time对象。一天中的时间加上一天中的时差<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Gets the tomorrow time object. The time of the day plus the time difference of the day</font>*</details>
接受参数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

简单地比较大小就可以直接进行比较。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Simply comparing the size can be compared directly.</font>*</details>
执行得太快了。这两个物体是一样的,所以睡一觉吧。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Execution is too fast. The two objects are the same, so get some sleep.</font>*</details>
obj_a = datetime.datetime.now()
time.sleep(1)
obj_b = datetime.datetime.now()
if obj_b > obj_a:
    print("yes")

要获得特定的时间差,请将其转换为时间戳并减去它<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>To get a specific time difference, convert it to a timestamp and subtract it</font>*</details>
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 基础操作

获取当前时间并将其输出为指定格式<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Gets the current time and outputs it to the specified format</font>*</details>
有引号是因为有空格,没有空格是有引号或没有引号的<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>There are quotation marks because there are spaces, no spaces are the same with or without quotation marks</font>*</details>
date +"%Y-%m-%d %H:%M:%S"

获取昨天的时间并将其输出为指定的格式<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Get yesterday's time and output it to the specified format</font>*</details>
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"

获取明天的日期并将其输出为指定的格式<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Get tomorrow's date and output it to the specified format</font>*</details>
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"

将给定日期输出为指定格式<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Outputs a given date to the specified format</font>*</details>
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"

查看影响编码的每个环境变量的当前值<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>View the current values of each environment variable that affects the coding</font>*</details>
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中时间获取与格式转换的方法总结

Original: https://www.cnblogs.com/djdjdj123/p/16361139.html
Author: Python探索牛
Title: Python3教程:在python/Shell/MySQL中时间获取与格式转换的方法总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499417/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球