2011-10-30 30 views
6

मैं एक प्रोटोटा फ़ाइल लिखने की कोशिश कर रहा हूं जिसमें डेट फ़ील्ड है जिसे प्रोटोकॉल बफर में एक प्रकार के रूप में परिभाषित नहीं किया गया है।प्रोटोकॉल बफर: दिनांक प्रकार को परिभाषित करने के लिए कैसे?

मैंने निम्नलिखित पोस्ट पढ़ी है लेकिन मुझे उपयुक्त समाधान नहीं पता था जो मुझे उपयुक्त बनाता है: What the best ways to use decimals and datetimes with protocol buffers?

मैं प्रोटो फ़ाइल को जावा में बदलने की कोशिश कर रहा हूं।

उत्तर

4

लिंक किए गए पोस्ट में मेरा उत्तर मुख्य रूप से प्रोटोबफ-नेट से संबंधित है; हालांकि, चूंकि आप जावा से इस पर आ रहे हैं, मैं अनुशंसा करता हूं: इसे सरल रखें।

तिथियों के लिए, मैं केवल एक युग में समय (शायद मिलीसेकंड) का उपयोग करने का सुझाव दूंगा (1 जनवरी 1 9 70 पारंपरिक है)। कई बार, उसी इकाई में केवल आकार (मिलीसेकंड आदि)। दशमलव के लिए, शायद स्केलिंग द्वारा निश्चित बिंदु का उपयोग करें - तो शायद 1.05 लंबे 1050 के रूप में व्यवहार करें और हमेशा 3 डीपी (इसलिए निश्चित बिंदु) पर जोर दें।

यह सरल और व्यावहारिक है, और चीजों को जटिल किए बिना सबसे आम परिदृश्यों को कवर करता है।

+0

Thx ... मैंने आपकी सलाह का पालन किया है और डेट फ़ील्ड को प्रोटो फ़ाइल में "int64" के रूप में प्रदर्शित करने के लिए बनाया है और मैं इसे अपनी जावा क्लास में बदल दूंगा। – Echo

+0

यही वह है जो मैं आम तौर पर करता हूं, यूनिक्स युग के बाद से मिलिस स्टोर करें। – Jeremy

+0

क्या आप int64 या fixed64 की अनुशंसा करते हैं? – ticktock

2

मुझे इस विचार पर बेचा नहीं गया है, लेकिन मैं वास्तव में टाइमस्टैम्प के रूप में तारीखों को संग्रहीत करने के विचार (जो समय में इंस्टेंट नहीं हैं) के विचार पर बेचा नहीं गया है, तो यहां मेरा सुझाव है।

अपनी तिथि को मानव-पठनीय पूर्णांक में परिवर्तित करें (उदा। 2014-11-320141103 बन जाता है) और इस पूर्णांक मान को स्टोर करें। इसमें आपको आवश्यक डेटा शामिल है, बनाना और पार्स करना आसान है, और न्यूनतम स्थान लेता है। इसके अतिरिक्त, यह आदेश दिया गया है और वैध मानों के लिए तारीखों का एक-से-एक मैपिंग है (दी गई, अमान्य संख्या संभव है, जैसे कि 20149999, लेकिन इन्हें पहचानना आसान है)। इसके विपरीत, लगभग 86400 मान्य टाइमस्टैम्प हैं जो प्रत्येक दिन प्रदर्शित करते हैं।

एनबी: discussion on DBA SE डेट स्टोरेज की इस विधि की आलोचना करते हुए, लेकिन उस संदर्भ में एक विशेष दिनांक प्रकार मौजूद है, जो स्पष्ट रूप से यहां मामला नहीं है।

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