2012-03-09 16 views
7

क्या डेटटाइम के लिए प्रारूप मान है। टॉस्ट्रिंग ("") जो वर्ष के दिन को तीन अंकों में निर्दिष्ट करेगा?डेटटाइम प्रारूप का वर्ष

उदाहरण के लिए:

  • 1 जनवरी, 2012 होगी 001
  • 1 फ़र,, 2012 होगा 032
  • दिसंबर 31, 2012 366 (लीप वर्ष)
  • दिसंबर 31 हो सकता है, 2011 365

उत्तर

21

नहीं, आप DateTime.DayOfYear का उपयोग कर सकते हैं। टोस्टरिंग ("000");

आपका उदाहरण:

new DateTime(2012, 1, 1).DayOfYear.ToString("000"); 
new DateTime(2012, 2, 1).DayOfYear.ToString("000"); 
new DateTime(2012, 12, 31).DayOfYear.ToString("000"); 
new DateTime(2011, 12, 31).DayOfYear.ToString("000"); 
+0

क्षमा , लेकिन यह लगभग उतना ही अच्छा धन्यवाद है। – Dismissile

+0

आपने इतनी तेज़ी से टाइप किया है। -) –

0

मुझे उपयोगकर्ताओं को एक प्रारूप देने की अनुमति देने की आवश्यकता थी जो वर्ष के दिन को संभालने में सक्षम हो और मैं निम्नलिखित कोड के साथ आया।

public static string FormatDate(this DateTime date, string format) 
{ 
    var builder = new StringBuilder(); 
    int numOfjs = 0; 
    bool escaped = false; 
    foreach (char c in format) 
    { 
     if (c == 'j' && !escaped) 
     { 
      numOfjs++; 
     } 
     else 
     { 
      if (c == 'j' && escaped) 
      { 
       builder.Remove(builder.Length - 1, 1); 
      } 

      if (numOfjs > 0) 
      { 
       var dayOfYearFormat = new string('0', Math.Min(3, numOfjs)); 
       builder.Append(date.DayOfYear.ToString(dayOfYearFormat)); 
      } 

      numOfjs = 0; 
      builder.Append(c); 
     } 

     escaped = c == '\\' && !escaped; 
    } 

    if (numOfjs > 0) 
    { 
     var dayOfYearFormat = new string('0', Math.Min(3, numOfjs)); 
     builder.Append(date.DayOfYear.ToString(dayOfYearFormat)); 
    } 

    return date.ToString(builder.ToString()); 
} 

यह आपको एक प्रारूप प्राप्त करने की अनुमति देता है जो वर्ष के दिन लगातार गैर-सीमित पत्र जे को प्रतिस्थापित करेगा। यह जे की संख्या के आधार पर 3 अंकों तक शून्य पैड होगा। 3 से अधिक लगातार जे के कार्य की तरह 3.

यह मूल रूप से सीमित जे के साथ एक जम्मू और लगातार जे के साथ प्रति वर्ष के साथ प्रारूप को फिर से लिखता है। इसके बाद यह नया प्रारूप DateTime.ToString() पर जाता है।

0

मैं जानता हूँ कि यह एक सा पुराना है, लेकिन आप बिल्कुल, सकारात्मक, कोड की एक पंक्ति में यह करने के लिए DateTime.DayOfYear समारोह के लिए उपयोग के बिना है (जैसे मैं आज करना था):

int myDay = floor(Now() - Date(parseInt(Now().ToString("yyyy")), 1, 1)) + 1; 
+0

मुझे उत्सुकता है कि आपका उपयोग केस कहां है, जहां आपको ए कोड की एक पंक्ति में करना था और बी) बिना DayOfYear – Dismissile

+0

उपयोगकर्ता साइड स्क्रिप्टिंग, एमएस एक्सेस स्टाइल। हाँ, मैं अंदर जा सकता था और उस समारोह को जोड़ सकता था जिसे स्क्रिप्ट हैंडलर लिखा गया था, तब भी हमें अस्तित्व में नहीं आया था, लेकिन फिर हमें फिर से संकलन और परीक्षण करना होगा और ग्राहक को नया निर्माण करना होगा और हमारे इतने अधिक बर्बाद कर देना होगा समय और ग्राहक के उपयोग के मामले का समय जो कभी दशक में कभी नहीं बढ़ता है या इसलिए कार्यक्रम चारों ओर रहा है, लेकिन यह बहुत बेहतर है अगर हम इसे पहले से उपलब्ध कार्यों के साथ कर सकते हैं। – Trevortni

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