2010-01-27 9 views
14

बनाएं मैं एक तारीख स्ट्रिंग लेने के लिए और यह एक विशिष्ट NSDate (जैसे। 1 जुलाई, 1981) में बदलने के लिए कोशिश कर रहा हूँ, लेकिन मैं नहीं दिख रहा है और तिथि सेट करने के लिए तरीके। क्या कोई यह जानता है कि इसे कैसे पूरा किया जाए? शायद डेटटाइम ऑब्जेक्ट को NSDate में कनवर्ट करें?NSDate Monotouch

उत्तर

-2

आप NSDateFormatter वर्ग को देखने के लिए :)

आपका कोड कुछ इस तरह दिखेगा चाहते हैं। । ।

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"MMM dd, yyyy HH:mm"]; 

NSDate *parsed = [formatter dateFromString:dateString]; 

एस

पी एस उदाहरण उदारतापूर्वक this question :)

+0

मैं सेटिंग पर गौर करेंगे NSDateFormatter का उपयोग करने की तारीख। मोनोटच में उद्देश्य सी के सभी तरीकों नहीं हैं, लेकिन यह सही दिशा में एक कदम की तरह दिखता है। धन्यवाद डीन – Bryan

+0

मैं अपने आप को monotouch उपयोग नहीं किया है लेकिन जाहिरा तौर पर NSDateFormatter संस्करण 1.4.4 में उपलब्ध है (http://monotouch.net/index.php?title=Releases/MonoTouch_1.4.4&highlight=NSDateFormatter)। – deanWombourne

9
public static DateTime NSDateToDateTime(MonoTouch.Foundation.NSDate date) 
{ 
    return (new DateTime(2001,1,1,0,0,0)).AddSeconds(date.SecondsSinceReferenceDate); 
} 

public static MonoTouch.Foundation.NSDate DateTimeToNSDate(DateTime date) 
{ 
    return MonoTouch.Foundation.NSDate.FromTimeIntervalSinceReferenceDate((date-(new DateTime(2001,1,1,0,0,0))).TotalSeconds); 
} 

से नकल यह

मदद करनी चाहिए एलेक्स

+4

कैसे NSDate सामान संभालती है और कैसे datetime करता है इस बीच खाते समय क्षेत्र मतभेद पर ध्यान नहीं देता। – BRogers

+1

http://developer.xamarin.com/guides/cross-platform/macios/unified/#Converting_DateTime_to_NSDate – testing

24

सबसे आसान तरीका है DATETIME से यह स्थापित करने के लिए है।

संशोधन: NSDate रूपांतरण ऑपरेटरों अब और अब स्पष्ट, निहित नहीं हैं! मैंने नीचे दिया गया उदाहरण अपडेट किया।

public static explicit operator NSDate(DateTime dt); 
    public static explicit operator DateTime(NSDate d); 

इन दो आप के लिए रूपांतरण करना होगा:

आप NSDate प्रोटोटाइप को देखें, तो आप दो ऑपरेटरों मिल जाएगा।

डेटटाइम से और उसके बाद एनएसडीएटी का स्पष्ट रूपांतरण काफी अच्छा है, लेकिन आपको अवगत होना चाहिए कि एनएसडीएटी हमेशा यूटीसी समय होता है और डेटटाइम डिफ़ॉल्ट टाइमटाइमकिंड पर सेट होता है। निर्दिष्ट (डेटाबेस से पढ़े जाने पर) या DateTimeKind.Locale (सेट करते समय डेटटाइम के साथ। आज)।

// Set NSDate: 
    DateTime date = DateTime.Parse("1981-07-01") 
    NSDate nsDate = (NSDate)DateTime.SpecifyKind(date, DateTimeKind.Utc); 

    // Get DateTime from NSDate: 
    date = DateTime.SpecifyKind((DateTime)nsDate, DateTimeKind.Unspecified); 
+4

मैं अपने ठीक से परिवर्तित सुनिश्चित करने के लिए एक निम्न पंक्ति जोड़कर सिफारिश करेंगे 'तारीख = date.ToLocalTime();' पूरी तरह से काम किया आपने जो उल्लेख किया है उसके अतिरिक्त मेरे लिए। मार्गदर्शन के लिए धन्यवाद। – BRogers

+0

'तारीख = DateTime.SpecifyKind (NSDate, DateTimeKind.Unspecified);' मेरे लिए यह गलत तारीख –

+0

यह भी मेरे लिए महान काम किया देता है। धन्यवाद! –

0
public NSDate ConvertDateTimeToNSDate(DateTime date) 
{ 
    DateTime newDate = TimeZone.CurrentTimeZone.ToLocalTime(
     new DateTime(2001, 1, 1, 0, 0, 0)); 
    return NSDate.FromTimeIntervalSinceReferenceDate(
     (date - newDate).TotalSeconds); 
} 

public DateTime ConvertNsDateToDateTime(NSDate date) 
{ 
    DateTime newDate = TimeZone.CurrentTimeZone.ToLocalTime( 
     new DateTime(2001, 1, 1, 0, 0, 0)); 
    return newDate.AddSeconds(date.SecondsSinceReferenceDate); 
} 

स्रोत:: https://theweeklybyte.wordpress.com/2014/05/27/convert-datetime-to-nsdate-and-back/

1

इस प्रयास करें: सबसे अच्छा तरीका जटिल समय-क्षेत्र की संगणना के बिना धर्मांतरण का अधिकार DateTimeKind मजबूर करने के लिए है

private static NSDate DateTimeToNSDate(DateTime date) 
    { 
     NSCalendar calendar = NSCalendar.CurrentCalendar; 
     NSDateComponents comps = new NSDateComponents(); 
     comps.Day = date.Day; 
     comps.Month = date.Month; 
     comps.Year = date.Year; 
     comps.Minute = date.Minute; 
     comps.Hour = date.Hour; 

     return calendar.DateFromComponents(comps); 
    } 
संबंधित मुद्दे