2012-09-21 10 views
12

में डेटाटाइम() से टाइमस्टैम्प() में कनवर्ट करने के लिए मुझे {{2012, 9, 21}, {13, 21, 11}} को टाइमस्टैम्प() में कनवर्ट करने की आवश्यकता है। मैं उसे कैसे कर सकता हूँ? धन्यवाद।एरलांग

+3

संबंधित से मॉड्यूल का हिस्सा है का उपयोग हो सकता है: http://stackoverflow.com/questions/825151/कन्वर्ट-टाइमस्टैम्प-टू-डेटटाइम-इन-एरलांग –

उत्तर

15

सही संस्करण:

Seconds = calendar:datetime_to_gregorian_seconds(DateTime) - 62167219200, 
%% 62167219200 == calendar:datetime_to_gregorian_seconds({{1970, 1, 1}, {0, 0, 0}}) 
{Seconds div 1000000, Seconds rem 1000000, 0}. 
+3

यह ठीक है, लेकिन सावधान रहें कि यदि आप फ़ंक्शन एरलांग का उपयोग कर रहे हैं: अब() तुलना के लिए टाइमस्टैम्प प्राप्त करने के लिए या वाई गणना, यदि आपको 1/1/1970 से शुरू होने का समय अनुमान मिलेगा, जबकि कैलेंडर: datetime_to_gregorian_seconds/1 मूल्यांकन 1/1/0 से करता है। तो 719528 दिनों का अंतर है ... – Pascal

+0

ओह, आप सही हैं। और चूंकि 'टाइमस्टैम्प()' को संभवतः 1 9 70 से शुरू होने के रूप में परिभाषित किया गया है, तो मेरा उत्तर _not_ ok :) –

+1

मैंने ऊपर दिए गए फ़ंक्शन का प्रयास किया है: टाइमस्टैम्प = डेटाटाइम_ओ_ओएन ({{2012, 9, 21}, {13, 21, 00 }}) फिर कैलेंडर: now_to_local_time (टाइमस्टैम्प) {{2012, 9, 21}, {17,21,0}} लौटाता है। मेरा टाइमज़ोन + 4 एच है। जैसा कि मैं समझ सकता हूं कि समारोह यूटीसी में टाइमस्टैम्प देता है। सही? –

1

आप इस

to_timestamp({{Year,Month,Day},{Hours,Minutes,Seconds}}) -> 
(calendar:datetime_to_gregorian_seconds(
    {{Year,Month,Day},{Hours,Minutes,Seconds}} 
) - 62167219200)*1000000; 

यह इस Github/Arboreus