Maison > développement back-end > Tutoriel Python > Introduction détaillée aux modules time et datetime de Python

Introduction détaillée aux modules time et datetime de Python

零下一度
Libérer: 2017-07-20 15:33:15
original
2543 Les gens l'ont consulté

Il existe trois formats principaux pour l'expression de l'heure dans le module horaire :

 a L'horodatage de l'horodatage, l'horodatage représente à partir de 00:00:00 le 1er janvier 1970 le décalage calculé. en secondes

b. struct_time time tuple, avec un total de neuf groupes d'éléments.

c. formater l'heure formater l'heure. La structure formatée rend l'heure plus lisible. Inclut les formats personnalisés et les formats fixes.

heure

Les fonctions couramment utilisées sont time.time() et time.sleep().

import timeprint(time.time())
Copier après la connexion
1499305554.3239055
Copier après la connexion

Le nombre à virgule flottante ci-dessus est appelé horodatage d'époque UNIX, qui est le nombre de secondes qui se sont écoulées depuis 0h00 le 1er janvier, 1970 à aujourd'hui. Vous pouvez voir qu'il y a 6 décimales à la fin. En utilisant la fonction round, vous pouvez arrondir les nombres à virgule flottante. Comme suit

# 默认四舍五入到整数位,即不保留小数print(round(time.time()))# 可指定参数保留的小数位数print(round(time.time(), 2))
Copier après la connexion
1499305554
1499305554.49
Copier après la connexion

time.sleep(sec) peut définir le mode veille actuel et remplir la ou les secondes comme paramètre.

print('good')
time.sleep(5.5)# 5.5秒后才打印这句print('yes')
Copier après la connexion
good
yes
Copier après la connexion

En utilisant d'autres fonctions

# 返回UTC时间print(time.gmtime())# 返回本地时间,在中国就是UTC+8print(time.localtime())
Copier après la connexion
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=6, tm_hour=1, tm_min=46, tm_sec=0, tm_wday=3, tm_yday=187, tm_isdst=0)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=6, tm_hour=9, tm_min=46, tm_sec=0, tm_wday=3, tm_yday=187, tm_isdst=0)
Copier après la connexion

Vous pouvez constater qu'il s'agit d'un type de tuple, Le fuseau horaire où se trouve la Chine est UTC+8. Vous pouvez constater qu’à l’exception de tm_hour (ils diffèrent exactement de +8), le reste est le même.

La fonction suivante peut renvoyer une date et une heure formatées, ce qui semble plus intuitif.

print(time.ctime())print(time.asctime())# 由于使用默认参数和上面的结果一样print(time.ctime(time.time()))print(time.asctime(time.localtime()))
Copier après la connexion
Thu Jul  6 09:46:15 2017
Thu Jul  6 09:46:15 2017
Thu Jul  6 09:46:15 2017
Thu Jul  6 09:46:15 2017
Copier après la connexion
  • ctime() peut transmettre un horodatage Lorsqu'aucun paramètre n'est spécifié, l'horodatage actuel est utilisé. par défaut. Autrement dit, time.time()

  • gtime() peut passer dans un struct_time Lorsqu'aucun paramètre n'est spécifié, l'heure actuelle est utilisée par défaut. Autrement dit, time.localtime()

struct_time est converti en chaîne et la chaîne est convertie en struct_time

  • Le premier paramètre de strptime est dans sous la forme d'une chaîne Date, le deuxième paramètre est un format de conversion de date personnalisé. Les formats de ces deux paramètres doivent correspondre. Par exemple, si l'un des time.strptime('2017/7/6', '%Y-%m-%d') utilise une barre oblique et l'autre un tiret, une erreur sera signalée. Cette fonction renvoie un struct_time

  • Le premier paramètre de strftime est le format de date dans lequel vous souhaitez le convertir, et le deuxième paramètre est un struct_time. Cette fonction convertit le struct_time sous la forme de. un tuple dans Le format spécifié par le premier paramètre est le format de chaîne de date convertie.

%Y-%m-%d représente l'année, le mois et le jour, qui seront présentés en détail dans le module datetime.

a = time.strptime('2017/7/6', '%Y/%m/%d')
b = time.strftime('%Y-%m-%d', time.localtime())print(a)print(b)
Copier après la connexion
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=6, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=187, tm_isdst=-1)
2017-07-06
Copier après la connexion

Mesurer la durée d'exécution d'un programme

L'utilisation d'horodatages peut facilement chronométrer la durée d'exécution d'un programme

start_time = time.time()sum = 0for i in range(10000000):sum += 1end_time = time.time()print(end_time - start_time)
Copier après la connexion
2.185124397277832
Copier après la connexion

Vous pouvez voir que le calcul et l'addition de la boucle sont exécutés 10 millions de fois, et que ce programme a pris plus de 2 secondes.

Vous pouvez également utiliser la fonction time.clock()

start = time.clock()print(start)  # 2.6773594453225194e-06time.sleep(2)
end = time.clock()print(end - start)  # 差值代表了睡眠2秒的时间。2.000246763295544time.sleep(3)print(time.clock())  # 5.00058991153112,返回的是从第一次调用到这次调用的时间间隔
Copier après la connexion
4.4622657422041984e-07
2.0026006084745567
5.013243112269714
Copier après la connexion

Vous pouvez voir que clock est étrange lorsqu'il est appelé pour la première fois, il renvoie l'heure à laquelle le processus est en cours d'exécution . Tous les appels ultérieurs seront différents de la valeur du premier appel clock. C'est-à-dire le temps écoulé entre le premier appel et l'appel en cours clock.
Comme ci-dessus, définissez start au-dessus de la partie du code que vous souhaitez tester et définissez end à la fin. Vous pouvez également obtenir le temps d'exécution du fragment de code en le soustrayant, et il est plus précis que <🎜. >. time.time()

datetime

est utilisé pour gérer la date et l'heure, qui comporte trois sous-modules. Ce sont datetime模块, donc si vous souhaitez utiliser datetime, vous pouvez utiliser la méthode d'importation suivante. time、date、datetime

from datetime import datetime# 返回当前时间now = datetime.now()print(now.year, now.month, now.microsecond)# 可以自定义参数,返回格式化后的时间dt = datetime(2017, 10, 1, 23, 59, 59, 456123)print(dt)
Copier après la connexion
2017 7 719609
2017-10-01 23:59:59.456123
Copier après la connexion
datetime accepte 7 paramètres, correspondant à l'année, au mois, au jour, à l'heure, à la minute, à la seconde et à la microseconde. Enregistré respectivement dans l'attribut

de datetime. year、month、day、hour、minute、second、microsecond

L'horodatage peut être converti en type datetime. Comme suit, utilisez l'horodatage de l'heure actuelle. Effectivement équivalent à

. Bien entendu, il est également possible d’obtenir l’horodatage à partir de datetime. datetime.now()

# 时间戳转datetimenow = datetime.fromtimestamp(time.time())print(now)
sometime = datetime(2017, 7, 5, 23, 59, 59)# datetime转时间戳print(sometime.timestamp())
Copier après la connexion
2017-07-06 09:46:07.903769
1499270399.0
Copier après la connexion
Ces objets datetime peuvent utiliser le symbole

pour comparer l'ordre de deux dates. Des opérations de soustraction peuvent également être effectuées pour exprimer la différence entre deux instants. Par exemple, ><=

dt1 = datetime(2017, 5, 31)
dt2 = datetime(2017, 4, 1)print(dt1 - dt2)print(dt1 > dt2)
Copier après la connexion
60 days, 0:00:00
True
Copier après la connexion
timedelta représente une période de temps

Notez qu'il ne représente pas un moment, mais une période de temps.

import datetime

delta = datetime.timedelta(weeks=2, days=7, hours=1, seconds=59,microseconds=234353)
delta1 = datetime.timedelta(days=5, hours=2)print(delta.seconds)  # 返回属性hours和seconds的和print(delta.total_seconds()) # 只是以秒来表示这段时间print(delta > delta1)print(delta + delta1)
Copier après la connexion
3659
1818059.234353
True
26 days, 3:00:59.234353
Copier après la connexion

timedelta的接受的参数有weeks、days、hours、minutes、seconds、microseconds,但是其属性却只有days、seconds、microseconds。并且除了像datetime一样支持大小比较、减法运算外,还可以进行加法运算,表示两个时间段的差值

将datetime转化为字符串形式及字符串转为datetime对象

time模块也有这两个函数(见上面的例子),使用上比较累类似。

  • strptime按照指定格式将字符串形式的日期转换成datetime对象并返回。

  • strftime将一个datetime对象(比如now)根据指定的格式转换成字符串并返回。

from datetime import datetime

a = datetime.strptime(&#39;2017/7/6&#39;, &#39;%Y/%m/%d&#39;)
b = datetime.now().strftime(&#39;%Y-%m-%d&#39;)print(a)print(b)
Copier après la connexion
2017-07-06 00:00:00
2017-07-06
Copier après la connexion

关于日期时间的格式,看下表。

格式指令 含义
%Y 带世纪的四位年份,如2017
%y 后两位年份,如17表示2017
%m 月份,从01到12
%B 完整的月份,如November
%b 月份的简写,如Nov
%d 一个月中的第几天,如从01到31(如果有的话)
%j 一年中的第几天
%w 一周中的第几天
%A 完整的周几,如Monday
%a 简写的周几,如Mon
%H 24小时制的小时00-23
%h 12小时制的小时01-12
%M 分,00-59
%S 秒,00-59
%p AM或者PM

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal