2013-07-04 5 views
8

मैं एक समय के रूप में एक अवधि (सेकेंड में) प्रारूपित करने की कोशिश कर रहा हूं और मुझे परिणाम मिल रहे हैं कि मुझे कहीं एक युग के लिए जिम्मेदार माना जाता है। मुझे "00:00:00" उत्पादित करने के लिए os.date("%X", 0) की उम्मीद है लेकिन यह "20:00:00" लौटा रहा है और साथ ही साथ "12/31/69" की तारीख मान (मुझे कैलेंडर तिथि की आवश्यकता नहीं है)।0 सेकंड के रूप में प्रारूपित करने के लिए लूआ का उपयोग 00:00:00

क्या समय अवधि स्ट्रिंग प्राप्त करने का एक मानक तरीका है जो कुल सेकंड सेकंड का प्रतिनिधित्व करने वाली घड़ी का उत्पादन करने के लिए 0 सेकंड का कारण बनता है? मैं जो भी करने की कोशिश कर रहा हूं उसके कहीं भी मुझे एक उदाहरण नहीं मिल रहा है।

धन्यवाद

उत्तर

16

अधिकांश सिस्टम (यानी, POSIX) में, os.date("%X",0) आप युग है, जो 0:00:00 है की समय देता है (कोऑर्डिनेटेड यूनिवर्सल टाइम, यूटीसी), 1 जनवरी 1 9 70। आपको 20:00:00 मिलता है क्योंकि आप एक अलग समय क्षेत्र में हैं।

अपने समय क्षेत्र के बजाय यूटीसी को मजबूर करने के लिए, ! के साथ प्रारूप शुरू करें। इसका उल्लेख manual में किया गया है।

तो, वांछित के रूप में 00:00:00 प्राप्त करने के लिए os.date("!%X",0) का उपयोग करें। यह किसी दिन (86400) से कम सेकंड के साथ काम करेगा। उदाहरण के लिए, os.date("!%X",70)00:01:10: 1 मिनट और 10 सेकंड देता है।

5

लुआ एक विशाल मानक पुस्तकालय नहीं है:

string.format("%.2d:%.2d:%.2d", s/(60*60), s/60%60, s%60) 
+2

यह संचालन के क्रम को ठीक करने के बाद ठीक काम करता है: एस/(60 * 60) – Patillac

+0

हां, क्षमा करें, मैंने इसका परीक्षण नहीं किया। इसके अलावा मैं मिनटों में मॉड्यूलस चूक गया। – mxcl

+2

'os.date' इसे कर सकता है। मेरा जवाब देखें – lhf

संबंधित मुद्दे

 संबंधित मुद्दे