केवल C # में दिनांक के लिए एक प्रकार - कोई दिनांक प्रकार क्यों नहीं है?


107

हमारी सी # परियोजना में हमें बिना समय के तारीख का प्रतिनिधित्व करने की आवश्यकता है। मुझे डेटटाइम के अस्तित्व का पता है, हालांकि, यह दिन के समय को भी शामिल करता है। मैं स्पष्ट करना चाहता हूं कि कुछ चर और विधि-तर्क तारीख-आधारित हैं । इसलिए मैं इसका उपयोग नहीं कर सकताDateTime.Date संपत्ति का

इस समस्या के मानक दृष्टिकोण क्या हैं? निश्चित रूप से मैं यह मुठभेड़ करने वाला पहला व्यक्ति नहीं हूं? क्यों कोई नहीं हैDateC # में क्लास है?

क्या किसी को किसी संरचना का उपयोग करके एक अच्छा क्रियान्वयन होता है और शायद डेटटाइम पर कुछ एक्सटेंशनमेथोड्स और शायद कुछ ऑपरेटरों जैसे == और <,> को लागू करना?


1
जब मैं स्पष्ट, स्पष्ट शब्दार्थ को समझना चाहता हूं, तो क्या विशिष्ट समस्याएं DateTimeपैदा होती हैं?
बजे जेफ सैंटर्न

15
1 मुझे विधि की शुरुआत में घंटे निकालने के लिए याद रखना चाहिए। 2 यह अच्छी तरह से संवाद नहीं करता है कि यह पूरी तरह से तारीखों पर काम करता है। यह महत्वपूर्ण है जैसे जब भंडारण और डीबी से लोड हो रहा है जहां एक संकीर्ण प्रकार पर्याप्त होगा। प्रोग्रामिंग कंप्यूटर नहीं लोगों के लिए संवाद है
कार्लो वी। डांगो

5
मैं सिर्फ यह कहना चाहता था कि डेट क्लास की कमी एक बड़ी बात है और डेटटाइम का उपयोग करना बिल्कुल भी अच्छा नहीं है। जैसे ही आप अपनी "तारीखों" को तारीख-समय के रूप में संग्रहीत करते हैं, आप बचत के मुद्दों के बारे में स्थानीय / समय-सीमा के बारे में सोचते हैं। समय भाग को फेंकने से आपकी सभी तिथियां एक दिन पहले वापस आ सकती हैं जब घड़ियां बदल जाती हैं (!)। और अलग-अलग टाइमज़ोन में उपयोगकर्ताओं को अलग-अलग तिथियां दिखाई देंगी जब वे तिथि-समय को बदलने की कोशिश करेंगे। समय में सटीक क्षणों का प्रतिनिधित्व करने के लिए दिनांक-समय ठीक है (कुछ बिंदु या जो भी हो) से लेकिन वे एक अमूर्त तिथि का प्रतिनिधित्व करने के लिए बहुत अनुपयुक्त हैं।
द मैथमैजिशियन

2
बाद में इसी तरह का प्रश्न stackoverflow.com/questions/7167710/… , और जॉन स्कीट का कहना है कि एक तारीख होनी चाहिए।
२-२२ बजे goodeye

8
एक तारीख केवल डेटा प्रकार एक डेटा पूर्णांक के रूप में डेटाइम के लिए एक दशमलव के लिए है। जिन लोगों का तर्क है कि हमें किसी तारीख की आवश्यकता नहीं है क्योंकि आप सिर्फ समय के भाग को फेंक सकते हैं, यह कहने के लिए कि हमें पूर्णांक की आवश्यकता नहीं है क्योंकि हम दशमलव भाग को फेंक सकते हैं। हमारी दुनिया में एक तारीख की अवधारणा है जिसमें एक समय शामिल नहीं है। 5 मार्च को 5 मार्च 00:00:00 नहीं है।
अस्पष्ट

जवाबों:


55

मुझे इस क्लासिक प्रश्न में एक अद्यतन जोड़ने की अनुमति दें:

  • जॉन स्कीट का नोदा टाइम लाइब्रेरी अब काफी परिपक्व हो गया है, और इसमें केवल तारीख नामक एक प्रकार है LocalDate। (इस मामले में स्थानीय का मतलब किसी के लिए स्थानीय है , जरूरी नहीं कि कंप्यूटर जहां कोड चल रहा हो वहां स्थानीय हो।)

  • Corefxlab प्रोजेक्ट के Dateमाध्यम से .net Core नामक एक तारीख-ही प्रकार प्रस्तावित जोड़ है । आप इसे पैकेज में, एक प्रकार के साथ , और मौजूदा प्रकारों के लिए कई विस्तार विधियों में पाएंगे ।System.TimeTimeOfDay

मैंने इस समस्या का काफी अध्ययन किया है, इसलिए मैं इन प्रकारों की आवश्यकता के लिए कई कारण साझा करूँगा:

  1. केवल दिनांक और मध्य-रात्रि मान के बीच एक तार्किक विसंगति है।

    • हर स्थानीय दिन है हर समय क्षेत्र में आधी रात को। उदाहरण: ब्राज़ील का स्प्रिंग-फ़ॉरवर्ड डेलाइट सेविंग टाइम ट्रांज़िशन घड़ी को 11:59:59 से 01:00:00 तक चलता है।

    • एक तारीख-समय हमेशा दिन के भीतर एक विशिष्ट समय को संदर्भित करता है, जबकि एक तारीख-केवल दिन की शुरुआत, दिन का अंत या दिन की संपूर्ण सीमा को संदर्भित कर सकता है।

  2. किसी समय को डेट पर ले जाने से डेट बदल सकती है क्योंकि वैल्यू एक वातावरण से दूसरे वातावरण में जाती है, अगर टाइम ज़ोन को बहुत ध्यान से नहीं देखा जाता है। यह आमतौर पर जावास्क्रिप्ट में होता है (जिसका Dateऑब्जेक्ट वास्तव में एक तारीख + समय है), लेकिन आसानी से .NET में भी हो सकता है, या क्रमांकन में भी हो सकता है क्योंकि डेटा जावास्क्रिप्ट और .NET के बीच पारित हो जाता है।

  3. DateTimeXML या JSON (और अन्य) के साथ सीरियल करना हमेशा समय को शामिल करेगा , भले ही यह महत्वपूर्ण न हो। यह बहुत भ्रामक है, विशेष रूप से जन्म तारीख और वर्षगांठ जैसी चीजों पर विचार करना, जहां समय अप्रासंगिक है।

  4. वास्तुकला, DateTimeएक DDD मूल्य-वस्तु है , लेकिन यह कई तरीकों से एकल जिम्मेदार सिद्धांत का उल्लंघन करता है:

    • यह एक तारीख + समय प्रकार के रूप में डिज़ाइन किया गया है, लेकिन अक्सर दिनांक-केवल (समय की अनदेखी), या समय-दिन-केवल (तिथि की अनदेखी) के रूप में उपयोग किया जाता है। ( TimeSpanइसका उपयोग अक्सर समय के लिए भी किया जाता है, लेकिन यह एक और विषय है।)

    • DateTimeKindसे जुड़ी मूल्य .Kindसंपत्ति तीन में एक प्रकार विभाजित करता है, Unspecifiedतरह वास्तव में संरचना के मूल उद्देश्य है, और तरीका है कि किया जाना चाहिए। Utcतरह यूटीसी के साथ विशेष रूप से मूल्य संरेखित करता है, औरLocal तरह संरेखित करता है पर्यावरण के स्थानीय समय क्षेत्र के साथ मूल्य।

      इस तरह के एक अलग झंडे के साथ समस्या यह है कि हर बार जब आप एक का उपभोग करते हैं DateTime, तो आपको यह तय करने के लिए जांचना चाहिए.Kind कि क्या व्यवहार करना है। फ्रेमवर्क के तरीके यह सब करते हैं, लेकिन अन्य अक्सर भूल जाते हैं। यह वास्तव में एसआरपी उल्लंघन है, क्योंकि अब परिवर्तन के दो अलग-अलग कारण हैं (मूल्य, और तरह)।

    • इनमें से दो API का उपयोग करते हैं जो संकलन करते हैं, लेकिन अक्सर निरर्थक होते हैं, या साइड इफेक्ट के कारण अजीब बढ़त के मामले होते हैं। विचार करें:

      // nonsensical, caused by mixing types
      DateTime dt = DateTime.Today - TimeSpan.FromHours(3);  // when on today??
      
      // strange edge cases, caused by impact of Kind
      var london = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
      var paris = TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time");
      var dt = new DateTime(2016, 3, 27, 2, 0, 0);  // unspecified kind
      var delta = paris.GetUtcOffset(dt) - london.GetUtcOffset(dt);  // side effect!
      Console.WriteLine(delta.TotalHours); // 0, when should be 1 !!!

सारांश में, जबकि एक तारीख-केवल के लिए इस्तेमाल किया DateTime जा सकता है, यह केवल तब करना चाहिए जब हर जगह जो इसका उपयोग करता है वह समय की अनदेखी करने के लिए बहुत सावधान है, और यूटीसी या अन्य से कन्वर्ट करने की कोशिश न करने के लिए भी बहुत सावधान है। समय क्षेत्र।


2
यदि केवल System.Time.Date.NET फ्रेमवर्क में समाप्त हो जाएगा: /
रॉबर्ट जोर्जेंसगार्ड एंगडाहल

1
आप आज इसका उपयोग कर सकते हैं, बस कोरफैक्स माईगेट फीड को सब्सक्राइब करें, और आप System.Timeकिसी भी अन्य पैकेज की तरह खींच सकते हैं । यह अभी तक "आधिकारिक" नहीं है।
मैट जॉनसन-पिंट

16

मुझे संदेह है कि कोई समर्पित शुद्ध Dateवर्ग नहीं है क्योंकि आपके पास पहले से ही है DateTimeजो इसे संभाल सकता है। बीत रहा है Dateदोहराव और भ्रम हो जाएगा।

यदि आप चाहते हैं कि मानक दृष्टिकोण उस DateTime.Dateसंपत्ति को देखें जो DateTime12:00:00 मध्यरात्रि (00:00:00) पर निर्धारित समय मान के साथ सिर्फ तारीख का हिस्सा देता है ।


61
एक समर्पित तिथि वर्ग का एक बड़ा फायदा यह है कि यह समय क्षेत्र और दिन के समय की बचत की जटिलताओं से ग्रस्त नहीं है।
दिमित्री सी।

3
@DimitriC। मैं असहमत हूँ - आप UTC के साथ DateTime का उपयोग कर सकते हैं और आप बताए गए मुद्दों से पीड़ित नहीं हैं, इसके अलावा एक DateTime के साथ भी, यदि आप चाहते हैं कि आप अभी भी तिथियों को गणित कर सकें जिसमें समय शामिल हो (तो मुझे तारीख दे दें यदि मैं 20 x 2 महीने का समय घटा दूं आज से)।
रॉबर्ट मैकलीन

@ रॉबर्ट मैकलेन: UTC DateTimes का उपयोग करने की सुविधा को रेखांकित करने के लिए धन्यवाद। मैंने कुछ परीक्षण किए और ऐसा लगता है कि DateTimeKind.Unspecified कृत्यों के साथ UTC जैसे घटाव है। तो वास्तव में, अगर आप DateTimes के "तरह" के बारे में सावधान हैं, तो आप सब कुछ ठीक कर देंगे।
दिमित्री सी।

10
UTC के बारे में सोचना और टाइमज़ोन के साथ कुछ भी करना बस ऊर्जा की बर्बादी है क्योंकि इसे आसानी से एक अलग दिनांक वर्ग से बचा जा सकता है। और मुझे दिनांक और दिनांक समय के बीच कोई भ्रम नहीं दिखता।
मौलिक

6
इस बात से सहमत हैं कि C # वास्तव में दिनांक वर्ग होना चाहिए। न केवल टाइम ज़ोन रूपांतरण चीज़ पनडुब्बी कीड़ों का एक निरंतर स्रोत है, बल्कि यह उन चीजों के साथ व्यवहार करते समय केवल सादा दर्दनाक है जो एक व्यवसायिक दिन है जो समय आधारित नहीं है।
जूलियन बर्च

12

मैंने refsrcfeedback@microsoft.com ईमेल किया है और यह उनका जवाब है

मार्कोस, इन जैसे सवाल पूछने के लिए यह अच्छी जगह नहीं है। Http://stackoverflow.com का प्रयास करें। लघु उत्तर यह है कि आपको समय में एक बिंदु का प्रतिनिधित्व करने के लिए एक मॉडल की आवश्यकता है, और डेटटाइम ऐसा करता है, यह व्यवहार में सबसे उपयोगी परिदृश्य है । तथ्य यह है कि मानव समय में अंक को चिह्नित करने के लिए दो अवधारणाओं (तारीख और समय) का उपयोग करता है, मनमाना है और अलग करने के लिए उपयोगी नहीं है।

केवल डिकूप्ल जहां यह वारंट किया गया है, केवल आंखें मूंदकर काम करने के लिए चीजें न करें। इसे इस तरह से सोचें: आपके पास डेट और टाइम में डेटटाइम को विभाजित करके क्या समस्या है? और आपको क्या समस्याएं आएंगी जो अब आपके पास नहीं हैं? संकेत: यदि आप .NET फ्रेमवर्क में DateTime usages को देखते हैं: http://referencesource.microsoft.com/#mscorlib/system/datetime.cs#df6b1eba7461813b#references को देखते हैं आप देखेंगे कि अधिकांश को एक विधि से लौटाया जा रहा है। यदि हमारे पास DateTime जैसी एक भी अवधारणा नहीं है, तो आपको दिनांक और समय की एक जोड़ी को वापस करने के लिए मापदंडों या Tuples का उपयोग करना होगा।

एचटीएच, किरिल ओसेनकोव

मेरे ईमेल में मैंने सवाल किया था कि क्या यह था क्योंकि डेटाइम मशीन के समय को प्राप्त करने के लिए TimeZoneInfo का उपयोग करता है - अब स्वामित्व में। इसलिए मैं कहूंगा कि "व्यापार नियम" "बहुत युग्मित" हैं, उन्होंने मुझे यह स्वीकार किया।


यह पोस्ट वास्तव में बिल्ट-इन डेट क्लास न होने के डिज़ाइन निर्णय के पीछे के विचारों को अंतर्दृष्टि देता है। आप उन्हें भेजने वाले सवाल क्या थे? मेरा तात्पर्य यह नहीं है कि मैं इस निर्णय से सहमत हूँ कि ऊपर सूचीबद्ध @TheMathemagician बहुत ही कारणों से।
रॉबर्ट जॉर्गेन्सगार्ड एंगडहल

@ RobertJørgensgaardEngdahl दुख की बात है कि मेरे पास अब उस ई-मेल खाते तक पहुंच नहीं है। लेकिन मेरा मानना ​​है कि मैंने उनसे पूछा है कि उन्होंने डेटटाइम संरचना में टाइम और डेट को एक साथ क्यों जोड़ा है। और सोचा कि मैं TheMathemagician से सहमत हूं, मुझे लगता है कि MS ने इस डिजाइन दृष्टिकोण को लिया क्योंकि एक अंतरराष्ट्रीय कंपनी के रूप में यह उनकी जरूरतों का भुगतान करता है - और अब इसे बदलने के लिए देर हो चुकी है - जबकि अवधारणाओं को विभाजित नहीं करता है।
एमवीसीडीएस

2
हो सकता है कि एमएस सिर्फ पूरे हॉग पर जाकर एक SpaceTimeक्लास लागू कर सके ! अरे, आइंस्टीन के अनुसार, अंतरिक्ष और समय बहुत कसकर जोड़े हुए हैं, इसलिए हमें उनके बीच अंतर करने की आवश्यकता नहीं है, है ना? (!!!!!!!!!!!) मैं C # में थोड़े नया हूं, लेकिन मेरा कहना है, यह VB.NET की ओर से आने वाली एक माइनफील्ड है, जहां, बस date, Today()और now, आदि। कोई DateTimeउपसर्ग नहीं , बकवास घूमना फिरना। (और ये अर्धविराम और यह केस-सेंसिटिव
सक्सेसफुल है

2
और उनके स्वयं के SQL सर्वर का Dateप्रकार और परिणाम प्रकार का होना चाहिए Date- अगर यह Dateटाइप परिणाम था जो बिना समय के स्ट्रिंग के रूप में अपेक्षित था । उदाहरण के लिए डेल्फी में डेटटाइम के रूप में भी तारीख होती है, लेकिन डेट और डेटटाइम के लिए अलग टाइप टाइपो।
user2091150

1
किरील ओसेनकोव "क्यू नहीं अलग डेट और टाइम क्लास बनाम डेटटाइम क्लास?" के क्यू का जवाब दे रहे हैं । वास्तविक क्यू था "क्यों नहीं भी अलग दिनांक और समय वर्ग है?"। मैं समझता हूँ कि दिनांक और समय को तिथि-समय की अवधारणा के कई उपयोग मामलों के लिए एक कक्षा में जोड़ा जाना चाहिए । हालाँकि, संभवत: कम से कम उतने ही हैं जितने अधिक नहीं तो सिर्फ एक तारीख की अवधारणा के वैध उपयोग के मामले । और निश्चित रूप से एक समय अवधारणा के कई वैध उपयोग के मामले भी हैं।
टॉम


4

यदि आपको तारीख तुलनाओं को चलाने की आवश्यकता है तो उपयोग करें

yourdatetime.Date;

यदि आप स्क्रीन उपयोग के लिए प्रदर्शित कर रहे हैं

yourdatetime.ToShortDateString();

.डेट भाग वह है जो मैं ढूंढ रहा था।
ब्रेंडन वोग्ट

3

मुझे अटकलें लगाने की अनुमति दें: शायद यह इसलिए है क्योंकि SQL Server 2008 तक SQL में कोई डेट डेटाइप नहीं था, इसलिए यह कठिन होगा ताकि इसे SQL सर्वर में स्टोर किया जा सके ?? और यह सभी Microsoft उत्पाद के बाद है?


एक DB डेटाटाइम C # डेटाटाइम से भिन्न है। Db डेटाइम में टाइमज़ोन नहीं होता है इसलिए वे वास्तव में किसी विशेष पल का संदर्भ नहीं देते हैं। लेकिन C # जानता है कि तत्काल है और UTC युग के बाद से टिक को संग्रहीत करता है।
Artsrc

2
चर्चा समर्पित DATE के बारे में है, डेटाइम पार्ट के बारे में इतना नहीं है इसलिए मुझे यह समझ नहीं आ रहा है कि आप जिस बिंदु को बनाने की कोशिश कर रहे हैं?
प्लेन

यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें।
बैरनका २ Bar

@Barranka - प्रश्न में "C # में कोई दिनांक वर्ग क्यों नहीं है?"
STLDev

2

कौन जानता है कि ऐसा क्यों है। .NET फ्रेमवर्क में बहुत सारे खराब डिजाइन निर्णय हैं। हालाँकि, मुझे लगता है कि यह एक बहुत मामूली है। आप हमेशा समय भाग को अनदेखा कर सकते हैं, इसलिए भले ही कुछ कोड डेट डेट को केवल तिथि से अधिक होने का संदर्भ देते हैं, जिस कोड की परवाह करता है उसे केवल तारीख के भाग को देखना चाहिए। वैकल्पिक रूप से, आप एक नया प्रकार बना सकते हैं जो केवल एक तिथि का प्रतिनिधित्व करता है और भारी उठाने (गणना) करने के लिए डेटटाइम में फ़ंक्शन का उपयोग करता है।


1
मुझे नहीं लगता है कि यह एक बुरा निर्णय था, आप केवल एक तारीख का उपयोग करना चाहते हैं या नहीं। मैं हां नहीं करूंगा, लेकिन यह मेरी राय है।
जोन्ह

मुझे नहीं लगता कि मैंने इसे अच्छी तरह से कहा है। मेरे पास वास्तव में इसके साथ कोई समस्या नहीं है, प्रति se, हालांकि मैं देख सकता था कि एक अमूर्त / लालित्य के दृष्टिकोण से दो या तीन प्रकार कैसे अधिक उपयुक्त होंगे। मेरा कहना वास्तव में यह था कि .NET फ्रेमवर्क में बहुत सारी चीजें हैं जो आपको अपना सिर खुजलाना छोड़ सकती हैं और यह बहुत परेशान होने लायक नहीं है, विशेष रूप से यह देखते हुए कि यह "मुद्दा" कुछ मामूली डिजाइन निर्णयों (जेनेरिक) की तुलना में बहुत मामूली है की कमी)।
मोहिनी

+1 क्योंकि यह सच है ... क्या यह एकमात्र समस्या थी (या .NET का सबसे बड़ा एक) :-) :-) SQL सर्वर के कितने संस्करणों में उन्हें DATE और TIME प्रकार जोड़ने की आवश्यकता थी? और वहाँ वे MUCH अधिक उपयोगी थे (कम से कम अखंडता कारणों के लिए)
xanatos

मुझे यह भी जोड़ना चाहिए कि मुझे लगता है कि "सब कुछ -100 अंक से शुरू होता है" एक गरीब-गरीब ढांचा बनाने का एक अच्छा तरीका है और यह उन चीजों में से एक हो सकता है जो उस कचरे में फंस गए थे।
१६'११

2
मुझे सिर्फ इस मुद्दे से काट दिया गया क्योंकि कोड का 1 हिस्सा .Date संपत्ति का उपयोग करने के लिए उपेक्षित था और इस तरह इसकी तुलना ठीक से नहीं की गई थी। मुझे निश्चित रूप से लगता है कि इस प्रकार की त्रुटि से बचने के लिए किसी तिथि प्रकार की आवश्यकता नहीं है जो किसी भी समय संग्रहीत न हो
जोएलफ़न

2

क्यों? हम केवल अटकलें लगा सकते हैं और यह इंजीनियरिंग समस्याओं को हल करने में मदद करने के लिए बहुत कुछ नहीं करता है। एक अच्छा अनुमान यह है DateTimeकि इस तरह की संरचना में सभी कार्यक्षमता शामिल हैं।

यदि यह वास्तव DateTimeमें आपके लिए मायने रखता है, तो बस अपनी खुद की अपरिवर्तनीय संरचना में लपेटें जो केवल तारीख को उजागर करती है (या DateTime.Dateसंपत्ति को देखें)।


2

रॉबर्ट के जवाब के अलावा आपके पास DateTime.ToShortDateStringतरीका भी है । इसके अलावा, यदि आप वास्तव में एक दिनांक ऑब्जेक्ट चाहते हैं, तो आप हमेशा एडेप्टर पैटर्न का उपयोग कर सकते हैं और केवल आप जो चाहते हैं (यानी महीने, दिन, वर्ष) को उजागर करने वाले डेटाइम ऑब्जेक्ट को लपेट सकते हैं।


2

वहाँ हमेशा DateTime.Dateसंपत्ति है जो समय का हिस्सा काट देता है DateTime। हो सकता है कि आप अपने स्वयं के दिनांक प्रकार में DateTime को संक्षिप्त या रैप कर सकते हैं।

और सवाल के लिए क्यों, ठीक है, मुझे लगता है कि आपको एंडर्स हेलजबर्ग से पूछना होगा।


1

क्योंकि तारीख जानने के लिए, आपको सिस्टम समय (टिक्स में) जानना होगा, जिसमें समय भी शामिल है - तो उस जानकारी को क्यों फेंक दें?

DateTimeDateयदि आपके पास समय की परवाह नहीं है तो एक संपत्ति है।


1

हाँ, System.DateTime भी सील है। मैंने देखा है कि कुछ लोग इसके साथ एक कस्टम क्लास बनाकर गेम खेलते हैं, जैसे कि पहले की पोस्ट्स, सामानों द्वारा बताए गए समय का स्ट्रिंग मान प्राप्त करने के लिए:

class CustomDate
{
    public DateTime Date { get; set; }
    public bool IsTimeOnly { get; private set; }

    public CustomDate(bool isTimeOnly)
    {
        this.IsTimeOnly = isTimeOnly;
    }

    public string GetValue()
    {
        if (IsTimeOnly)
        {
            return Date.ToShortTimeString();
        }

        else
        {
            return Date.ToString();
        }
    }
}

यह शायद अनावश्यक है, क्योंकि आप आसानी से एक नए वर्ग के बिना एक पुराने पुराने DateTime प्रकार से GetShortTimeString को आसानी से निकाल सकते हैं


0

यदि आप DateTime ऑब्जेक्ट से केवल दिनांक भाग प्राप्त करने के लिए दिनांक या आज के गुणों का उपयोग करते हैं।

DateTime today = DateTime.Today;
DateTime yesterday = DateTime.Now.AddDays(-1).Date;

फिर आपको दिनांक घटक मध्यरात्रि के लिए निर्धारित समय घटक के साथ ही मिलेगा।


1
यह निश्चित रूप से वह नहीं है जो मैं चाहता था
कार्लो वी। डांगो

@ कार्लो वी। डांगो: मैं असहमत हूं। मुझे लगता है कि यह वही है जो आप चाहते थे।
१६:१२ पर सिराइड करें

1
@ कार्लो वी। डंगो: क्या आप विशेष रूप से ऐसा करने के लिए देख रहे हैं कि ये गुण आपको पूरा करने की अनुमति नहीं देते हैं?
eph_tagh

5
यह काफी आसान है: एक तिथि स्मृति पदचिह्न संभवतः डेटाइम (केवल 64 बिट्स के बजाय 32) की स्मृति पदचिह्न का आधा होगा। आपको यकीन होगा कि आपके बेवकूफ सहकर्मी ने .AddHours (1) को आपकी तारीख में परिवर्तित नहीं किया है, लेकिन "डेट" के POV से "समान" रखते हुए। यदि (एक त्रुटि के लिए) DateTime DateTimeKind पर सेट है। समय और UTC के लिए सामान्यीकृत है, तो तारीख शायद बदल जाएगी (XmlSerialization और JSON के लिए बुरी तरह से किया गया राउंडट्रिप के उपयोग के माध्यम से) ... क्या यह पर्याप्त है?
ज़नाटोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.