मैं C # में डेटटाइम ऑब्जेक्ट को कैसे क्लोन कर सकता हूं?


89

मैं C # में डेटटाइम ऑब्जेक्ट को कैसे क्लोन कर सकता हूं?


6
आपको क्लोन ए की आवश्यकता क्यों होगी DateTime, यह अपरिवर्तनीय है।
लुकाज़ोइड

जवाबों:


203

दिनांक समय एक मान प्रकार है (struct )

इसका मतलब है कि निम्नलिखित एक प्रतिलिपि बनाता है:

DateTime toBeClonedDateTime = DateTime.Now;
DateTime cloned = toBeClonedDateTime;

तुम भी सुरक्षित रूप से काम कर सकते हैं जैसे:

var dateReference = new DateTime(2018, 7, 29);
for (var h = 0; h < 24; h++) {
  for (var m = 0; m < 60; m++) {
    var myDateTime = dateReference.AddHours(h).AddMinutes(m);
    Console.WriteLine("Now at " + myDateTime.ToShortDateString() + " " + myDateTime.ToShortTimeString());
  }
}

ध्यान दें कि पिछले उदाहरण myDateTimeमें प्रत्येक चक्र में नए सिरे से घोषित किया गया है; अगर dateReferenceइससे प्रभावित हुआ था , AddHours()या वास्तव में तेजी से भटक गया होगा - लेकिन यह नहीं है, क्योंकि यह लगा रहता है:AddMinutes()myDateTimedateReference

Now at 2018-07-29 0:00
Now at 2018-07-29 0:01
Now at 2018-07-29 0:02
Now at 2018-07-29 0:03
Now at 2018-07-29 0:04
Now at 2018-07-29 0:05
Now at 2018-07-29 0:06
Now at 2018-07-29 0:07
Now at 2018-07-29 0:08
Now at 2018-07-29 0:09
...
Now at 2018-07-29 23:55
Now at 2018-07-29 23:56
Now at 2018-07-29 23:57
Now at 2018-07-29 23:58
Now at 2018-07-29 23:59

26
var original = new DateTime(2010, 11, 24);
var clone = original;

DateTimeएक मूल्य प्रकार है, इसलिए जब आप इसे असाइन करते हैं तो आप इसे क्लोन भी करते हैं। उस ने कहा, इसका कोई मतलब नहीं है क्योंकि यह अपरिवर्तनीय है; यदि आप कॉपियों में से किसी एक को बदलने का इरादा रखते हैं तो आमतौर पर आप केवल कुछ क्लोन कर सकते हैं।


1
+1 से सहमत हैं। जिस तरह से मुझे समस्या हुई वह थी एक नई डेटाइम ऑब्जेक्ट बनाने और बस आवश्यक भागों की प्रतिलिपि बनाने के लिए जिन्हें मैं (डेट, महीने, साल) जैसे मूल डेटाइम ऑब्जेक्ट से क्लोन करना चाहता था और फिर नए ऑब्जेक्ट के लिए मैन्युअल रूप से समय निर्धारित किया। .. उदहारण के लिए।
दाल

12

डेटटाइम एक वैल्यू टाइप है इसलिए हर बार जब आप इसे एक नए वैरिएबल पर असाइन करते हैं तो आप क्लोन कर रहे होते हैं।

DateTime foo = DateTime.Now;
DateTime clone = foo;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.