[Python] यूनिक्स टाइमस्टैम्प स्ट्रिंग को पठनीय तिथि में कनवर्ट करना


Answers

>>> from datetime import datetime
>>> datetime.fromtimestamp(1172969203.1)
datetime.datetime(2007, 3, 4, 0, 46, 43, 100000)

http://seehuhn.de/pages/pdate से लिया गया

Question

मेरे पास पाइथन में एक यूनिक्स टाइमस्टैम्प (यानी "1284101485") का प्रतिनिधित्व करने वाली एक स्ट्रिंग है, और मैं इसे एक पठनीय तिथि में परिवर्तित करना चाहता हूं। जब मैं time.strftime उपयोग करता time.strftime , मुझे time.strftime मिलता है:

>>>import time
>>>print time.strftime("%B %d %Y", "1284101485")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument must be 9-item sequence, not str



एक दिलचस्प तरीका है जहां आपको समय क्षेत्र, यूटीसी इत्यादि के बारे में चिंता करने की ज़रूरत नहीं है। बस स्ट्रिंग को Excel दिनांक प्रारूप में परिवर्तित करें, और फिर एक पठनीय दिनांक / समय पर:

import datetime

def xldate_to_datetime(xldate):
    temp = datetime.datetime(1899, 12, 30)
    delta = datetime.timedelta(days=xldate)
    return temp+delta

ts = "1284101485"
tsxl = ((int(ts)/60)/60)/24 + 25569
readabledate =  xldate_to_datetime(tsxl)
print(readabledate)



>>> import time
>>> time.ctime(int("1284101485"))
'Fri Sep 10 16:51:25 2010'
>>> time.strftime("%D %H:%M", time.localtime(int("1284101485")))
'09/10/10 16:51'



क्या आपने डेटाटाइम पैकेज देखा था? मेरा मानना ​​है कि इसमें यूनिक्स टिमस्टैम्प विधि है।




समय / डेटाटाइम पैकेज का उपयोग करने के अलावा, पांडा का भी एक ही समस्या को हल करने के लिए उपयोग किया जा सकता है। यहां बताया गया है कि हम टाइमस्टैम्प को पठनीय तिथि में बदलने के लिए पांडा का उपयोग कैसे कर सकते हैं:

टाइमस्टैम्प दो प्रारूपों में हो सकता है:

  1. 13 अंक (मिलीसेकंड) - मिलीसेकंड को आज तक परिवर्तित करने के लिए, उपयोग करें:

    import pandas
    result_ms=pandas.to_datetime('1493530261000',unit='ms')
    str(result_ms)
    
    Output: '2017-04-30 05:31:01'
    
  2. 10 अंक (सेकंड) - सेकंड को आज तक कनवर्ट करने के लिए, उपयोग करें:

    import pandas
    result_s=pandas.to_datetime('1493530261',unit='s')
    str(result_s)
    
    Output: '2017-04-30 05:31:01'
    



दो भाग हैं:

  1. यूनिक्स टाइमस्टैम्प ("युग के बाद से सेकंड") को स्थानीय समय में कनवर्ट करें
  2. वांछित प्रारूप में स्थानीय समय प्रदर्शित करें।

स्थानीय समय प्राप्त करने के लिए एक पोर्टेबल तरीका जो काम करता है भले ही स्थानीय समय क्षेत्र में अतीत में एक अलग यूटीसी ऑफसेट था और python के पास tz डेटाबेस तक कोई पहुंच नहीं है, एक pytz का उपयोग करना है:

#!/usr/bin/env python
from datetime import datetime
import tzlocal  # $ pip install tzlocal

unix_timestamp = float("1284101485")
local_timezone = tzlocal.get_localzone() # get pytz timezone
local_time = datetime.fromtimestamp(unix_timestamp, local_timezone)

इसे प्रदर्शित करने के लिए, आप किसी भी समय प्रारूप का उपयोग कर सकते हैं जो आपके सिस्टम द्वारा समर्थित है उदाहरण:

print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
print(local_time.strftime("%B %d %Y"))  # print date in your format

यदि आपको स्थानीय समय की आवश्यकता नहीं है, तो इसके बजाय एक पठनीय यूटीसी समय प्राप्त करें:

utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))

यदि आपको टाइमज़ोन समस्याओं की परवाह नहीं है जो उस तारीख को प्रभावित कर सकती हैं जो दिनांक लौटाया गया है या यदि आपके सिस्टम पर पायथन के पास Tz डेटाबेस तक पहुंच है:

local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))

पायथन 3 पर, आप केवल stdlib का उपयोग करके टाइमज़ोन-जागरूक डेटाटाइम प्राप्त कर सकते हैं (यदि आपके सिस्टम पर tz डेटाबेस तक कोई पहुंच नहीं है, तो यूटीसी ऑफ़सेट गलत हो सकता है जैसे कि विंडोज़ पर):

#!/usr/bin/env python3
from datetime import datetime, timezone

utc_time = datetime.fromtimestamp(unix_timestamp, timezone.utc)
local_time = utc_time.astimezone()
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))

time मॉड्यूल से कार्य संबंधित सी एपीआई के आसपास पतले रैपर होते हैं और इसलिए वे संबंधित datetime विधियों की तुलना में कम पोर्टेबल हो सकते हैं अन्यथा आप उनका भी उपयोग कर सकते हैं:

#!/usr/bin/env python
import time

unix_timestamp  = int("1284101485")
utc_time = time.gmtime(unix_timestamp)
local_time = time.localtime(unix_timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time)) 
print(time.strftime("%Y-%m-%d %H:%M:%S+00:00 (UTC)", utc_time))  



import datetime
temp = datetime.datetime.fromtimestamp(1386181800).strftime('%Y-%m-%d %H:%M:%S')
print temp