俄罗斯贵宾会-俄罗斯贵宾会官网
做最好的网站

python不归路_time模块

模块

Time模块:

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(module)。

  Time时间在python中有三种格式:时间戳、格式化时间、struct_time(元祖形式),我们来看下三种格式具体表现形式。

使用模块好处:

俄罗斯贵宾会,  时间戳:142112412431(秒),1970年1月1日算起,1970年1月1日是Unix诞生的日子。

1、提高可维护性

  格式化时间:2017-09-09 18:00:00。

2、可重用

  struct_time:(tm_year=2017, tm_mon=9, tm_mday=9, tm_hour=13, tm_min=41, tm_sec=20, tm_wday=5, tm_yday=252, tm_isdst=0)

3、避免函数名和变量冲突

  我们通过help(time)l来查看time模块的函数

模块分类

1.time()

模块分为三种:

time.time()函数输出结果为时间戳,单位为秒。

  • 内置标准模块(又称标准库)。执行help('modules')查看所有Python自带模块列表
  • 第三方开源模块。可通过pip install 模块名 ,安装
  • 自定义安装

2.sleep()

相对导入

time.sleep()函数使代码延迟运行,单位秒。

 

3.gmtime()

或者有人会看到这个错

time.gmtime()函数将参数转化为struct_time,括号中参数填写时间戳,该函数将时间戳转化为UTC时区元祖。如果括号中参数为空,结果输出为当前UTC时间。

 

import time
time.gmtime()
print(‘-------------------------------------------------------------------------------------------------------------------’)
time.gmtime(123123124)
输出结果:
time.struct_time(tm_year=2017, tm_mon=9, tm_mday=10, tm_hour=13, tm_min=49, tm_sec=50, tm_wday=6, tm_yday=253, tm_isdst=0)   #当前UTC时间
-------------------------------------------------------------------------------------------------------------------
time.struct_time(tm_year=1973, tm_mon=11, tm_mday=26, tm_hour=0, tm_min=52, tm_sec=4, tm_wday=0, tm_yday=330, tm_isdst=0)  #时间戳转化struct_time元祖
ValueError: attempted relative import beyond top-level package

我们观察发现struct_time是一个包含9个元素的元祖,如果我们需要获取其中任意一个元素,我们可以使用以下方法。

 

import time
x=time.gmtime()
print('year:%s'%(x.tm_year))
print('mon:%s'%(x.tm_mon))
输出结果:
year:2017
mon:9

其实这两个错误的原因归根结底是一样的:在涉及到相对导入时,package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。否则由于不被视作package,无法利用package之间的嵌套关系实现python中包的相对导入。

4.localtime()

 

与gmtime()类似,localtime()括号中不能带参数,localtime()输出当前计算机所在时区的struct_time元祖。

文件夹被python解释器视作package需要满足两个条件:

5.mktime()

 

time.mktime()函数将struct_time元祖转化为时间戳。

  1. 文件夹中必须有__init__.py文件,该文件可以为空,但必须存在该文件。
  2. 不能作为顶层模块来执行该文件夹中的py文件(即不能作为主函数的入口)。
import time
x=time.localtime()
x
time.mktime(x) #struct_time转化为时间戳
time.time()  
输出结果
time.struct_time(tm_year=2017, tm_mon=9, tm_mday=10, tm_hour=22, tm_min=4, tm_sec=56, tm_wday=6, tm_yday=253, tm_isdst=0)
1505052296.0
1505052309.3117964

 

6.strftime()

所以这个问题的解决办法就是,既然你在views.py里执行了相对导入,那就不要把views.py当作入口程序,可以通过上一级的manage.py调用views.py

time.strftime()函数语法:strftime(format[, tuple])

 

常用的format:     %Y  Year with century as a decimal number.           年
              %m  Month as a decimal number [01,12].               月
              %d  Day of the month as a decimal number [01,31].    日
              %H  Hour (24-hour clock) as a decimal number [00,23].  小时
              %M  Minute as a decimal number [00,59].        分钟
              %S  Second as a decimal number [00,61].        秒

.
├── __init__.py
├── crm
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   ├── views.py  #from ..proj import settings , ..返回上一级目录后和入口程序manage.py在同一个目录了,所以报错。。
├── manage.py  #from crm import views , 入口程序manage.py所在目录是根目录
└── proj
    ├── __init__.py
    ├── settings.py #from .import urls  
    ├── urls.py
    └── wsgi.py
#事实证明还是不行,报错
ValueError: attempted relative import beyond top-level package
import time
x=time.localtime()
time.strftime('%Y-%m-%d,%H:%M:%S',x)
输出结果:
'2017-09-10,22:14:05'

一、Python中表示时间的几种方式:

输出结果为格式话的字符串,函数中format格式我们可以自由定义,第一个函数时间格式%Y-%m-%d,%H:%M:%S,第二个函数时间格式%m-%d,%Y %H:%M:%S

  1. 时间戳
  2. 格式化的时间字符串
  3. 元祖(struct_time)共9个元素。由于Python的time模块实现主要调用C库,所以各个平台不同。 
time.strftime('%m-%d,%Y  %H:%M:%S',x)
输出结果:
'09-10,2017  22:14:05'

二、几个定义

 7.strptime

UTC(时间协调时)亦即格林威治天文时间。世界标准时间。

time.strptime()函数输入参数字符串和格式化字符,输出struct_time元组。

时间戳(timestamp)的方式

import time
time.strptime('2017-09-11,12:12:12','%Y-%m-%d,%H:%M:%S')
输出结果:
time.struct_time(tm_year=2017, tm_mon=9, tm_mday=11, tm_hour=12, tm_min=12, tm_sec=12, tm_wday=0, tm_yday=254, tm_isdst=-1)

元祖方式:

strptime()函数在使用时需注意的是 '2017-09-11,12:12:12'和'%Y-%m-%d,%H:%M:%S'参数要一一对应,例如‘2017-09-11’要对应日期格式‘%Y-%m-%d’,其中的‘-’符号也要对应,同理,时间也要对应。

time & datetime模块

8.asctime

  • time.time() 显示1970年到现在系统时间的秒数

    time.time() /3600 /24/365 48.19778262615837

  • time.localtime([secs]) :将一个时间戳转换为当前时区的struct_time。secs参数默认是当前时间。

    time.localtime() time.struct_time(tm_year=2018, tm_mon=3, tm_mday=2, tm_hour=12, tm_min=36, tm_sec=4, tm_wday=4, tm_yday=61, tm_isdst=0) a = time.localtime() a.tm_year 2018

    用来拼接

    '%s-%s-%s' %(a.tm_year,a.tm_mon,a.tm_mday)

time.asctime()

'2018-3-2'

把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。

本文由俄罗斯贵宾会发布于编程,转载请注明出处:python不归路_time模块

您可能还会对下面的文章感兴趣: