Што гэта самы просты спосаб атрымаць бягучы час па Грынвічы ў фармаце часовай пазнакі Unix?

Python provides different packages (datetime, time, calendar) as can be seen here in order to deal with time. I made a big mistake by using the following to get current GMT time time.mktime(datetime.datetime.utcnow().timetuple())

Што такое просты спосаб атрымаць бягучы час па Грынвічы ў Отметка часу Unix?

79
Што ўвод/выснова? <�Код> datetime.utcnow() вяртае бягучы час UTC ў якасці аб'екта даты і часу (я мяркую, што вы хочаце UTC, калі вы кажаце пра «час па Грынвічы»). <�Код> time.time() вяртае змяняць час Unix непасрэдна як лік з якая плавае кропкай. Вось як пераўтварыць datetime.date/datetime.datetime часу, які прадстаўляе ў UTC для POSIX пазнакі часу .
дададзена аўтар jfs, крыніца
Што ўвод/выснова? <�Код> datetime.utcnow() вяртае бягучы час UTC ў якасці аб'екта даты і часу (я мяркую, што вы хочаце UTC, калі вы кажаце пра «час па Грынвічы»). <�Код> time.time() вяртае змяняць час Unix непасрэдна як лік з якая плавае кропкай. Вось як пераўтварыць datetime.date/datetime.datetime часу, які прадстаўляе ў UTC для POSIX пазнакі часу .
дададзена аўтар jfs, крыніца
Ці з'яўляецца прапанаваныя вамі метады няправільна, або проста занадта шматслоўны? Звязаны: stackoverflow.com/questions/15940280/& hellip;
дададзена аўтар Ciro Santilli 包子露宪 六四事件 法轮功, крыніца
Ці з'яўляецца прапанаваныя вамі метады няправільна, або проста занадта шматслоўны? Звязаны: stackoverflow.com/questions/15940280/& hellip;
дададзена аўтар Ciro Santilli 包子露宪 六四事件 法轮功, крыніца
Чаму ваш метад памылка?
дададзена аўтар skeller88, крыніца
Чаму ваш метад памылка?
дададзена аўтар skeller88, крыніца

10 адказы

Я хацеў бы выкарыстаць time.time (), каб атрымаць змяняць час у секундах з пачатку эпохі.

import time

time.time()

выхад:

1369550494.884832

Для стандартнай рэалізацыі CPython на большасці платформаў гэта будзе вяртаць значэнне UTC.

131
дададзена
@ 9000: лакальная часовая зона не мае значэння. Unix час адпавядае часу UTC (калі мы будзем ігнараваць час вакол высакосных секунд). Падумайце аб гэтым: адзнака часу гэта колькасць секунд, якія прайшлі з пачатку эпохі (фіксаваны момант часу): чаму б гэта залежыць ад таго, што гадзінны пояс машына мясцовага выкарыстоўвае гадзіннік? У любы дадзены момант часу часу Unix такі ж па ўсім свеце. Некаторыя з іх (невядома) платформы можа выкарыстоўваць іншую эпоху, але яго значэнне па-ранейшаму не будзе залежаць ад мясцовага гадзіннага пояса.
дададзена аўтар jfs, крыніца
@ J.F.Sebastian: дзякуй! Гэта мае сэнс, я выпраўлюся.
дададзена аўтар 9000, крыніца
Загвоздка ў тым, што лакальныя гадзіны вашай машыны можа быць не ў UTC.
дададзена аўтар 9000, крыніца
дададзена аўтар Ciro Santilli 包子露宪 六四事件 法轮功, крыніца
@ 9000: Правільна, хоць я заўсёды настойваю на UTC ў любы асяроддзі, дзе час захоўваючы значэнне. І ён сапраўды прасіў для найпростага рашэння. Звярніце ўвагу, што з CPython на сучасных платформах, уключаючы Linux, BSD, Mac OS X і Windows, усё будзе вяртаць UTC для time.time (). Гэта адлюстроўвае паводзіны функцыі часу з стандартнай бібліятэкі C на гэтых АС.
дададзена аўтар Edmond Burnett, крыніца

Ці дапамагае гэта?

from datetime import datetime
import calendar

d = datetime.utcnow()
unixtime = calendar.timegm(d.utctimetuple())
print unixtime

How to convert Python UTC datetime object to UNIX timestamp

37
дададзена
FWIW: Гэта не UTC час, гэта UTC пераўтворыцца ў лакальнае час. Каб атрымаць змяняць час у UTC вы павінны зрабіць што-небудзь яшчэ.
дададзена аўтар Sherlock70, крыніца
@Cairnarvon Гэта проста прыклад. Калі вы хочаце, бягучага часу, то вы можаце проста выклікаць time.time() і не патрабуюць пераўтварэнні DATETIME наогул.
дададзена аўтар Messa, крыніца
Замест datetime.utcnow (). Utctimetuple() , вы можаце таксама выкарыстоўваць time.gmtime() .
дададзена аўтар Cairnarvon, крыніца
Спасылка мёртвая!
дададзена аўтар Gaurav Dave, крыніца
@NickCaplinger Так, гэта дапамагло.
дададзена аўтар John Strood, крыніца
@GauravDave Дзякуй, я абнавіў спасылку з архіўнай версіяй.
дададзена аўтар Nick Caplinger, крыніца

Ці дапамагае гэта?

from datetime import datetime
import calendar

d = datetime.utcnow()
unixtime = calendar.timegm(d.utctimetuple())
print unixtime

How to convert Python UTC datetime object to UNIX timestamp

37
дададзена
FWIW: Гэта не UTC час, гэта UTC пераўтворыцца ў лакальнае час. Каб атрымаць змяняць час у UTC вы павінны зрабіць што-небудзь яшчэ.
дададзена аўтар Sherlock70, крыніца
@Cairnarvon Гэта проста прыклад. Калі вы хочаце, бягучага часу, то вы можаце проста выклікаць time.time() і не патрабуюць пераўтварэнні DATETIME наогул.
дададзена аўтар Messa, крыніца
Замест datetime.utcnow (). Utctimetuple() , вы можаце таксама выкарыстоўваць time.gmtime() .
дададзена аўтар Cairnarvon, крыніца
Спасылка мёртвая!
дададзена аўтар Gaurav Dave, крыніца
@NickCaplinger Так, гэта дапамагло.
дададзена аўтар John Strood, крыніца
@GauravDave Дзякуй, я абнавіў спасылку з архіўнай версіяй.
дададзена аўтар Nick Caplinger, крыніца

Ці дапамагае гэта?

from datetime import datetime
import calendar

d = datetime.utcnow()
unixtime = calendar.timegm(d.utctimetuple())
print unixtime

How to convert Python UTC datetime object to UNIX timestamp

37
дададзена
FWIW: Гэта не UTC час, гэта UTC пераўтворыцца ў лакальнае час. Каб атрымаць змяняць час у UTC вы павінны зрабіць што-небудзь яшчэ.
дададзена аўтар Sherlock70, крыніца
@Cairnarvon Гэта проста прыклад. Калі вы хочаце, бягучага часу, то вы можаце проста выклікаць time.time() і не патрабуюць пераўтварэнні DATETIME наогул.
дададзена аўтар Messa, крыніца
Замест datetime.utcnow (). Utctimetuple() , вы можаце таксама выкарыстоўваць time.gmtime() .
дададзена аўтар Cairnarvon, крыніца
Спасылка мёртвая!
дададзена аўтар Gaurav Dave, крыніца
@NickCaplinger Так, гэта дапамагло.
дададзена аўтар John Strood, крыніца
@GauravDave Дзякуй, я абнавіў спасылку з архіўнай версіяй.
дададзена аўтар Nick Caplinger, крыніца
import time

int(time.time()) 

выхад:

1521462189
25
дададзена
У той час як гэты фрагмент кода можа вырашыць пытанне, уключаючы тлумачэнне сапраўды дапамагае палепшыць якасць вашага паста. Памятаеце, што вы адказваеце на пытанне, для чытачоў у будучыні, і гэтыя людзі могуць не ведаць прычыны вашага кода прапановы.
дададзена аўтар Isma, крыніца
import time

int(time.time()) 

выхад:

1521462189
25
дададзена
У той час як гэты фрагмент кода можа вырашыць пытанне, уключаючы тлумачэнне сапраўды дапамагае палепшыць якасць вашага паста. Памятаеце, што вы адказваеце на пытанне, для чытачоў у будучыні, і гэтыя людзі могуць не ведаць прычыны вашага кода прапановы.
дададзена аўтар Isma, крыніца

Ці проста выкарыстоўваючы стандартны модуль DATETIME

In [2]: from datetime import timezone, datetime
   ...: int(datetime.now(tz=timezone.utc).timestamp() * 1000)
   ...: 
Out[2]: 1514901741720

Вы можаце пакараціць або размножвацца ў залежнасці ад дазволу вы хочаце

4
дададзена
вы мой дрэнны, я дадаў ИНТ ліццё пазней
дададзена аўтар Maresh, крыніца
You код вельмі вызначана прымушае час у цэлы лік, так што я заблытаўся, чаму выснову тэксту дзесятковы лік?
дададзена аўтар Weston, крыніца

Ці проста выкарыстоўваючы стандартны модуль DATETIME

In [2]: from datetime import timezone, datetime
   ...: int(datetime.now(tz=timezone.utc).timestamp() * 1000)
   ...: 
Out[2]: 1514901741720

Вы можаце пакараціць або размножвацца ў залежнасці ад дазволу вы хочаце

4
дададзена
вы мой дрэнны, я дадаў ИНТ ліццё пазней
дададзена аўтар Maresh, крыніца
You код вельмі вызначана прымушае час у цэлы лік, так што я заблытаўся, чаму выснову тэксту дзесятковы лік?
дададзена аўтар Weston, крыніца

Мне падабаецца гэты метад:

import datetime, time

dts = datetime.datetime.utcnow()
epochtime = round(time.mktime(dts.timetuple()) + dts.microsecond/1e6)

Іншыя метады, размешчаныя тут, альбо не гарантуецца, каб даць вам UTC на ўсіх платформах, ці толькі паведаміць цэлыя секунды. Калі вы хочаце поўнае дазвол, гэта працуе, на мікра-секунду.

0
дададзена

Мне падабаецца гэты метад:

import datetime, time

dts = datetime.datetime.utcnow()
epochtime = round(time.mktime(dts.timetuple()) + dts.microsecond/1e6)

Іншыя метады, размешчаныя тут, альбо не гарантуецца, каб даць вам UTC на ўсіх платформах, ці толькі паведаміць цэлыя секунды. Калі вы хочаце поўнае дазвол, гэта працуе, на мікра-секунду.

0
дададзена