2010-10-21 7 views
6

मुझे डेटटाइम ऑब्जेक्ट को डेटाटेबल में संग्रहीत करने के साथ कोई समस्या आ रही है, यह उस तरह की जानकारी को सेट करता है। उदाहरण के लिए यदि डेटटाइम.किंड यूटीसी है, तो एक बार जब मैं इसे डेटारो वैल्यू पर असाइन करता हूं तो यह बिना किसी निर्दिष्ट के प्रकार को बदल देता है कृपया नीचे दिए गए कोड को ढूंढें।किसी डेटाटाइम ऑब्जेक्ट को डेटा तालिका में संग्रहीत करते समय डेटटाइम प्रकार को कैसे बनाए रखें?

public class LocalTimeToUtcConverter 
    { 
     public DateTime Convert(DateTime localDate) 
     { 
      var utcOffset = TimeZoneInfo.Local.GetUtcOffset(localDate); 

      var utc = localDate.ToUniversalTime(); 

      return utc + utcOffset; 
     } 
    } 

[Test] 
     public void Should_set_datetime_column_kind_to_utc() 
     {    
      var localDate = new DateTime(2010, 11, 01, 00, 00, 00); 
      Assert.That(localDate.Kind == DateTimeKind.Unspecified); 
      var converter = new LocalTimeToUtcConverter(); 
      DateTime date = converter.Convert(localDate); 
      Assert.That(localDate.Kind == DateTimeKind.Utc); 
      var data = CreateTable(date); 
      //Failes-Why???? 
      Assert.That(((DateTime)data.Rows[0].ItemArray[0]).Kind == DateTimeKind.Utc); 
     } 

     private DataTable CreateTable(DateTime date) 
     {    
      DataTable table = new DataTable();    
      table.Columns.Add(new DataColumn("Date1", typeof(DateTime))); 

      for (int i = 0; i < 10; i++) 
      { 
       var newRow = table.NewRow(); 
       newRow[0] = date; 
       table.Rows.Add(newRow); 
      } 

      return table; 
     } 

कृपया क्या आप मुझे इसके लिए एक समाधान बता सकते हैं?

धन्यवाद !!!

उत्तर

8

तालिका। कॉलम। जोड़ें (नया डेटा कॉलम ("दिनांक 1", टाइपऑफ (डेटटाइम));

DataColumn.DateTimeMode संपत्ति का उपयोग करें:

var col = new DataColumn("Date1", typeof(DateTime)); 
col.DateTimeMode = DataSetDateTime.Utc; 
table.Columns.Add(col); 

अगर आप, यूटीसी में अपने dbase में दिनांक की दुकान की तरह आपको भी करना चाहिए यह कोई फर्क नहीं करना चाहिए।

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