簡體   English   中英

創建NSDate Monotouch

[英]Create NSDate Monotouch

我正在嘗試使用日期字符串並將其轉換為特定的NSDate(例如,1981年7月1日),但我沒有看到和設置日期的方法。 有誰知道如何做到這一點? 也許將DateTime對象轉換為NSDate?

最簡單的方法是從DateTime設置它。

修訂:NSDate轉換運算符現在是顯式的,不再是隱式的! 我更新了下面的例子。

如果你看一下NSDate原型,你會發現兩個運算符:

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

這兩個將為您進行轉換。

NSDate與DateTime的顯式轉換非常好,但您必須知道NSDate始終是UTC時間,而DateTime默認設置為DateTimeKind.Unspecified(從數據庫讀取時)或DateTimeKind.Locale(使用DateTime.Tocale設置時) )。 在沒有復雜的時區計算的情況下進行轉換的最佳方法是強制使用正確的DateTimeKind:

    // 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);
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);
}

這應該有所幫助

亞歷克斯

嘗試這個:

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);
    }
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/

你想看一下NSDateFormatter類:)

你的代碼看起來像這樣。

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

NSDate *parsed = [formatter dateFromString:dateString];

小號

PS示例從這個問題中大肆復制:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM