[oeasy]python0024_unix时间戳_epoch_localtime_asctime_PosixTime_unix纪年法

简介: [oeasy]python0024_unix时间戳_epoch_localtime_asctime_PosixTime_unix纪年法

输出时间

回忆上次内容

  • 通过搜索
  • 我们学会 import 导入 time


  • 完整写法为
  • asc_time = time.asctime( time.localtime( time.time()))



  • 内部函数是在__builtins__这个包里面的自带的
  • 比如 quit()


import time ascii_time = time.asctime( time.localtime( time.time())) print (ascii_time)

  • 这一大长串的函数究竟应该如何理解呢??
  • 首先要分清函数和参数
  • 就像要分清工艺和原料


原料与产品

  • 模型车间
  • 原料是木材
  • 工艺是将木材制作为木头模型



  • 上色车间
  • 原料是木头模型
  • 工艺是给木块上色



  • 本车间的产品是下一个车间的原料
  • 函数的嵌套也是如此
  • 本函数的返回值可以是下一个函数的参数


嵌套的函数

  • 这个一大串东西是有规律的
  • 首先什么是 time



  • time是一个module(包)
  • 这个包里面都有些什么呢?


time包中

  • time 是一个 module (模块包)
  • 处理时间的包



  • help(time)
  • 引入了time这个包之后
  • 就可以查询 time 包的帮助


  • 这里面有time.time吗?

翻到最后

  • 可以找到time.time函数


  • 除了time.time()
  • 还可以找到
  • time.localtime()
  • time.asctime()
  • 这三个都是time里面的函数



  • 我可以只看time.time的帮助吗?

具体函数帮助手册

  • help(time.time)


  • 例子是一行写成的
  • ascii_time = time.asctime(time.localtime(time.time()))


  • 函数是一层层嵌套的
  • 可以分拆成几行吗?


分开写

  • time.time这个函数不接受参数
  • 返回的是一个浮点数



  • 原来
  • 我们使用了函数嵌套调用


  • 现在
  • 我们试试把函数嵌套调用拆开
  • 不用嵌套
  • 分开写


  • 一点点来剖析

分布的过程

  • 函数嵌套调用
  • 首先通过调用 time.time()函数 得到了ticks
  • 然后通过调用 localtime(ticks)函数 得到了local_time
  • 最后通过调用 asctime(localtime) 得到了ascii_time



  • 这分步的过程就像工厂车间

步骤分拆

  • 当前函数的返回值是下一个函数的参数


  • 那么这些函数
  • time
  • localtime
  • asctime
  • 都是什么意思


  • 分别help一下

<span style="color:red">time</span>.<span style="color:green">time()</span>

  • help(time.time)


  • 这里有两个time有点乱
  • 我们区分一下颜色
  • 前面的是红色的 <span style="color:red">time</span>
  • 后面的是绿色的 <span style="color:green">time()</span>


  • <span style="color:red">time</span>.<span style="color:green">time()</span>
  • 红色的是 <span style="color:red">time</span> 这个包(module)
  • <span style="color:red">time</span> 包(module)里面有很多函数(function)
  • 圆括号说明绿色的 <span style="color:green">time()</span> 是函数
  • 红色绿色之间的.的意思是 里面的
  • 从<span style="color:red">time</span> 包里调用 .(里面的) <span style="color:green">time()</span> 这个函数(function)
  • 这个 <span style="color:green">time()</span> 函数 就是  <span style="color:red">time</span> 包 里面 的函数


  • 那么这个<span style="color:red">time</span>.<span style="color:green">time()</span>到底返回什么值呢?

调用

  • 调用一下看看


  • 这一串长长的数字应该如何理解

time.time()的意义

  • 我们还是得返回来看帮助文件


  • 这个东西返回的是一个浮点型的数字
  • 浮点的浮是浮动的浮
  • 浮点的点是小数点的点


  • 这个值是从Epoch到当前的时间总共过了多少秒


  • 那什么又是Epoch呢?

Epoch

  • 发音是[ˈepək]
  • Epoch 的意思是纪年方法或者说是年号
  • 公元2022年日本纪年法令和四年
  • 公元1587年是明朝万历十五年
  • 今年是耶稣纪年法2022年



  • 那python中的Epoch年号
  • 又是什么年号呢?


unix纪年法

  • unix纪年法(unix时间戳)
  • 从1970年1月1日开始的
  • 也就是1970-01-01T00:00:00Z
  • 格林威治天文台标准时间(Greenwich Mean Time)
  • 1970 年 1 月 1 日 00:00:00
  • 每过一秒这个数字就加1
  • 每过半秒这个数字就加0.5
  • 所以Epoch也叫做
  • seconds since the Epoch



  • 为什么是1970-01-01呢?
  • 第一版unix的正式发布是在1971年
  • 编写c和unix工作是从1969年开始实施的
  • 大概率是Kenneth ThompsonDennis Ritchie
  • 在1970年初一拍脑门定下来了这个起始时间点


  • 上游影响下游
  • 这个关于秒数的数据类型time_t也已然在后来成了标准c库的一部分
  • 因此被广泛运用在各种 类unix(Unix-like)的软件系统中
  • 比如我们用到的这个debian的变种ubuntu


  • 所以 Epoch 也叫做
  • Unix Time
  • Posix Time
  • UNIX Epoch Time



  • time.time()得到的是一个浮点数
  • 但是我们要的是年份、月份、日期、时分秒这些具体的信息
  • 考虑到从闰年到闰秒的一系列难题


  • 这个转化太麻烦了
  • 有什么办法么?


time.localtime()


  • time.time()出来的浮点秒数交给 time.localtime()处理
  • time 还是包名
  • 这次的函数名变成了 localtime()
  • 输入是unix时间戳
  • 输出本地时间元组
  • 年份、月份、日期、时分秒这些具体的信息




  • 如果不给time.localtime函数任何参数
  • 那么time.localtime默认使用time.time()作为参数


  • time.time()我们刚才研究过
  • time.time()就是当前时间的unix时间戳



  • 这两个结果是一样的

time.asctime()

  • time.asctime 函数
  • 输入参数为
  • time.localtime()输出的时间元组


  • 输出为一个字符串



  • asctime函数 接收时间元组产生 ascii 字符串
  • ascii 就是 ascii编码
  • asctime 就是 用ascii方式显示的 time



  • asctime函数也有默认缺省参数么?

asctime的默认缺省参数

  • 查询文档


  • 如果不给asctime函数任何参数
  • 默认使用time.localtime()作为参数
  • time.localtime()
  • 就是当前时间的时间元组




最后输出

  • 我们都使用默认参数
  • 把函数嵌套大大简化了


  • 把最后的结果交给 print()
  • 最终就能得到当前的时间!



  • 我可以让时间刷新么?

手动延迟

  • 我想要刷新这个东西怎么办?
  • 需要手动刷新得到 asc_time
  • 然后重新输出 asc_time


  • 这个过程可以手动来完成


  • 但我想让他自动刷新起来
  • 先去编写一个py程序


编写程序


  • 运行结果


  • 每次执行python3 test.py
  • 就刷新
  • 刷新完全靠手


总结

  • time 是一个 module
  • import 他可以做和时间相关的事情
  • time.time()
  • 得到当前时间戳


  • time.localtime()
  • 得到本地时间元组
  • local为本地


  • time.asctime()
  • 得到时间日期字符串
  • asc为ascii



  • 简略的写法为
  • asc_time = time.asctime()


  • time.asctime()
  • time是导入的module
  • asctime 是 time 这个 module 里面的函数



相关文章
|
3月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
64 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
27天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
18 1
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
328 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
32 4
|
2月前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
25 1
|
1月前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
12 0
|
2月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
24 3
|
2月前
|
算法 Unix 数据安全/隐私保护
Python编程--UNIX口令破解机
Python编程--UNIX口令破解机
27 1
|
2月前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
50 0
|
3月前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
32 4