Python'da, bilgisayarın hangi UTC zaman ayarlı olarak ayarlandığını nasıl bulabilirsiniz?Bilgisayarın UTC ofsetini Python'da alma
cevap
gmtime()
, UTC saatini döndürecek ve localtime()
yerel saati döndürecek, böylece ikisini çıkararak, utc ofsetini vermeniz gerekir.
import time
print -time.timezone
Saniyeler (hesap Yaz Saati (DST içine almaya) 'de ofset UTC time.altzone bkz yazdırır:
ofset utc aracılığıyla tanımlanıris_dst = time.daylight and time.localtime().tm_isdst > 0
utc_offset = - (time.altzone if is_dst else time.timezone)
: "gösterilmesi için Yerel saat, utc zaman için utc ofset ekleyin. "
Python 3.3 + 'da, C kütüphanesi destekliyorsa tm_gmtoff
attribute var:
utc_offset = time.localtime().tm_gmtoff
Not
:time.daylight
some edge cases bir yanlış sonuç verebilir.
tm_gmtoff
o 3.3+ Python geçerli olup olmadığını otomatik olarak datetime tarafından kullanılır:
from datetime import datetime, timedelta, timezone
d = datetime.now(timezone.utc).astimezone()
utc_offset = d.utcoffset() // timedelta(seconds=1)
time.daylight
sorunu geçici çözümler ve bu tm_gmtoff
mevcut olmasa bile çalışır şekilde ofset akım UTC almak için, @jts's suggestion yerel ve UTC zamanı substruct için kullanılabilir:
import time
from datetime import datetime
ts = time.time()
utc_offset = (datetime.fromtimestamp(ts) -
datetime.utcfromtimestamp(ts)).total_seconds()
UTC geçmiş/gelecek tarihlerde ofset almak için pytz
saat dilimleri kullanılabilir:
from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal
tz = get_localzone() # local timezone
d = datetime.now(tz) # or some other local date
utc_offset = d.utcoffset().total_seconds()
, geçmişte için çalışıyor/gelecek yerel saat dilimi 2010-2015 döneminde zaman örneğin Avrupa/Moskova zaman dilimi de ofset farklı UTC olsaydı bile büyük.
Bu güzel ve temiz. – Rockallite
Çok yardımsever. Teşekkürler, J.F. –
'total_seconds()' ın yalnızca Python 3.2+ sürümünde mevcut olduğunu unutmayın. – mattst
Sevdiğim:
>>> strftime('%z')
'-0700'
İlk OTS' cevabını çalıştı, ama bana yanlış sonuç verdi. Şu an -0700'üm ama, -0800'lü olduğumu söylüyordu. Ama çıkarabileceğim bir şey elde edebilmek için biraz dönüşüm yapmalıydım, bu yüzden cevap yanlıştan daha eksikti.
'% z ', Python tarafından desteklenmiyor (' time.localtime(). Tm_gmtoff' yerine kullanabileceğin bazı sistemlerde çalışabilir, bunun yerine utc ofsetini bir sayı değil, string olarak alır). ('% Z'') sonucu, Jts'ın cevabı ile aynı olmalıdır. Aksini düşünüyorsanız kodunuzu ekleyin. – jfs
ithalat süresi time0 = time.time() utc_time = time.mktime (time.gmtime (time0)) LOCAL_TIME = time.mktime (time.localtime (time0)) offset = LOCAL_TIME - utc_time baskı (ofset/(60 * 60)) -8. – dstromberg
1. Yorumlara kod koymayın, cevabınızı 2. yerine güncelleyin. Buradaki mktime() işlevini kullanmak yanlıştır, – jfs
İşte bazı python3 kodları, yalnızca tarih ve zaman olarak içe aktarılır. HTH
>>> from datetime import datetime
>>> import time
>>> def date2iso(thedate):
... strdate = thedate.strftime("%Y-%m-%dT%H:%M:%S")
... minute = (time.localtime().tm_gmtoff/60) % 60
... hour = ((time.localtime().tm_gmtoff/60) - minute)/60
... utcoffset = "%.2d%.2d" %(hour, minute)
... if utcoffset[0] != '-':
... utcoffset = '+' + utcoffset
... return strdate + utcoffset
...
>>> date2iso(datetime.fromtimestamp(time.time()))
'2015-04-06T23:56:30-0400'
Bu benim için çalışıyor:
if time.daylight > 0:
return time.altzone
else:
return time.timezone
farkını bulmak için calendar.timegm() 'veya' datetime() 'yi kullanın. yanlış. Uyarı: ['time.localtime(). Tm_isdst> benim cevapta benzer bir kodda 0'] (http://stackoverflow.com/a/3168394/4279) – jfs
Üzgünüz, yazınız çok uzun ve eksiksiz aynı cevabı olduğu anlaşılmadı. Benim yazı kesinlikle aynı çözümün daha kısa bir versiyonudur. – Alecs
no, kod yanlış. time.daylight' yaz saatinin şu an olup olmadığını söylemez. Yerel saatin DST olabileceğini söylüyor. Işte bu yüzden time.localtime(). Tm_isdst' demek zorundasınız. – jfs
- 1. Ruby'de UTC ofsetini edinin
- 2. Geçerli UTC ofsetini (saat dilimi) nasıl alabilirim?
- 3. Perl'de UTC ofsetini elde etmenin en iyi yolu nedir?
- 4. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 5. Bilgisayarın saatine bir sayı ekleme
- 6. Bilgisayarın benzersiz bir tanımlayıcısı nasıl edinilir?
- 7. WMI kullanarak Windows Bilgisayarın SID'sini nasıl alabilirim?
- 8. R bilgisayarın tüm çekirdeklerini nasıl kullanır?
- 9. Bilgisayarın toplam RAM miktarı nasıl bilinir?
- 10. Ana bilgisayarın ulaşılabilir olup olmadığını nasıl belirleyebilirim?
- 11. Bir kafka konusundaki LATEST ofsetini nasıl alabilirim?
- 12. Bytes, BufferedReader'ın okunmasını (ofsetini) nasıl öğrenir?
- 13. nm ile bir sembolün dosya ofsetini bulun
- 14. Dakika içinde UTC ofseti
- 15. pytz utc dönüşümü
- 16. zaman dilimi ve UTC
- 17. UTC biçiminde tarih Java
- 18. iPhone CurrentTimeZoneOffset from UTC
- 19. Java'da UTC Saati Oluşturma
- 20. Javascript UTC - Yerel (IST)
- 21. OpenCV'de ekran boyutu alma
- 22. SQL Server'da datetimeoffset ofset alma
- 23. PHP mktime sonucunu UTC dönüştürebilirsiniz
- 24. java.time kullanarak ayrıştırma UTC tarihi
- 25. dizesinde bir UTC zamanı üretir
- 26. Moment.js, UTC tarihleri arasındaki farkı
- 27. biçimi GMT/UTC zaman olarak
- 28. datetime.date.today() UTC süresine nasıl dönüştürebilirim?
- 29. Dönüştürme OffsetDateTime UTC zaman damgası
- 30. Uzak bilgisayardan konsol çıktısı alma (ssh + python)
Parlak! Basit düşünmeyi öğrenmeliyim :) – Paul
Bu, burada bazı zarif sadeliktir. –
Onları çıkarmak, TypeError: -: 'time.struct_time' ve 'time.struct_time' için desteklenmeyen işlenen türü/türlerini verir. Gerçekten ne demek istedin? – rakslice