2009-07-03 18 views
6

में काम नहीं करता है। Python में calendar.timegm() का उपयोग करके, मुझे यूनिक्स टाइमस्टैम्प के लिए 10 अंकों का परिणाम मिलता है। जब मैं इसे जावास्क्रिप्ट के सेटटाइम() फ़ंक्शन में डालता हूं, तो यह 1 9 70 में एक तिथि के साथ आता है। जाहिर है कि यह एक यूनिक्स टाइमस्टैम्प की आवश्यकता है जो 13 अंकों लंबा है। ये केसे हो सकता हे? क्या वे दोनों एक ही तारीख से गिन रहे हैं?पायथन यूनिक्स समय जावास्क्रिप्ट

मैं इन दो भाषाओं के बीच एक ही यूनिक्स टाइमस्टैम्प का उपयोग कैसे कर सकता हूं?

अजगर में:

In [60]: parseddate.utctimetuple() 
Out[60]: (2009, 7, 17, 1, 21, 0, 4, 198, 0) 
In [61]: calendar.timegm(parseddate.utctimetuple()) 
Out[61]: 1247793660 

Firebug में:

>>> var d = new Date(); d.setTime(1247793660); d.toUTCString() 
"Thu, 15 Jan 1970 10:36:55 GMT" 
+0

वहाँ एक कारण है कि आप यूटीसी के अलावा एक प्रारूप में इन तारीखों गुजर नहीं कर रहे हैं है (http://en.wikipedia.org/wiki/Coordinated_Universal_Time) ? – SingleNegationElimination

उत्तर

11

timegm अजगर यूनिक्स समय गुणा करना चाहिए यूनिक्स की gmtime() विधि, जो 1 जनवरी के बाद से सेकंड लौटने के लिए, 1970

Javascripts setTime() पर आधारित है विधि उस तारीख से मिलीसेकंड है। जावास्क्रिप्ट द्वारा अपेक्षित प्रारूप में कनवर्ट करने के लिए आपको अपने सेकंड के समय 1000 गुणा करने की आवश्यकता होगी।

2

आप संभवतः अप सेकंड के बाद से 1970 मिलीसेकंड के बाद से 1970 के साथ मिश्रण कर रहे हैं?

1

जावास्क्रिप्ट Date constructor मिलीसेकेंड के साथ काम करता है, तो आप द्वारा 1000.

var unixTimestampSeg = 1247793660; 
var date = new Date(unixTimestampSeg*1000); 
8

यहां कुछ पाइथन विधियां हैं जिनका उपयोग मैं जावास्क्रिप्ट/डेटाटाइम में और कनवर्ट करने के लिए करता हूं।

def to_datetime(js_timestamp): 
    return datetime.datetime.fromtimestamp(js_timestamp/1000) 

def js_timestamp_from_datetime(dt): 
    return 1000 * time.mktime(dt.timetuple()) 

जावास्क्रिप्ट में आप करना होगा:

var dt = new Date(); 
dt.setTime(js_timestamp);