2009-05-15 23 views
6

समस्या: YYYYddd का एक प्रारूप है, जो वर्ष है मेंक्रमसंख्या दिनांक स्वरूप सी #

आप दिया जाता है तिथियाँ, के माध्यम से 365 (366), वर्ष का दिन 1 के बाद। उदाहरण के लिए आज 200 9 35 (5/15/2009) होगा।

इससे नया डेटाटाइम बनाने का सबसे अच्छा तरीका क्या है? रूबी में मुझे पता है कि एक निर्माता है जो

Date.ordinal(2009, 135) 

क्या सी # के लिए एक समान नियंत्रक है?

उत्तर

10

हम्म, मैं एक अधिक सीधा रास्ता है तो यकीन नहीं है, लेकिन यह काम करना चाहिए

new DateTime(year, 1, 1).AddDays(day - 1); 
3

कैसे के बारे में:

new DateTime(ordinal/1000, 1, 1).AddDays((ordinal % 1000) - 1); 

इस दिन पर निर्भर करता है 2009 के 1 2,009,001 के रूप में प्रतिनिधित्व किया जा रहा हालांकि 200 9 हालांकि। यदि यह उत्तरार्द्ध है, तो यह थोड़ा सा ट्रिकियर है (हालांकि अभी भी बिल्कुल मुश्किल नहीं है)।

मैं इस तरह के प्रारूप से काफी तेज़ी से दूर जाने की कोशिश करता हूं - यह बिल्कुल आम नहीं है, और यह पूरी तरह से पढ़ा जा सकता है। "2009001" प्रारूप को मानते हुए कम से कम उचित रूप से टाइप किया गया है, लेकिन मैं इसके पक्ष में और कुछ नहीं सोच सकता।

+0

ओह मेरा विश्वास करो, यही कारण है कि मैं इसे परिवर्तित कर रहा हूं। यह वही है जो इसे हमें सौंप दिया जा रहा है। हम उस प्रारूप को लेते हैं और हमारे डेटाबेस में आयात करते हैं, लेकिन इसे सामान्य डेटाटाइम में परिवर्तित करते हैं। बीटीडब्ल्यू, मुझे आपका जवाब पसंद है, यह मुझे पहले जवाब की तरह करने के लिए मारा, लेकिन मैं इसे एक पंक्ति में करना चाहूंगा। मेरे अंदर रूबी का अनुमान लगाओ। और हाँ, यह हमेशा YYYYddd प्रारूप में बाहर आ रहा है। – taelor

+0

बीटीडब्ल्यू, मैंने वास्तव में सिर्फ दूसरे व्यक्ति को जवाब दिया। उसके पास केवल 4k अंक हैं, और मैं प्यार साझा करना चाहता हूं। – taelor

+0

कोई समस्या नहीं - मुझे नहीं लगता कि 15 खोना मुझे बहुत चोट पहुंचाने वाला है :) –

1
int year = 2009; 
int month = 1; 
int day = 1; 
int dayOfYear= 135; 

DateTime myDate = new DateTime(year, month, day); 
myDate.AddDays(dayOfYear - 1);