15

我正在尝试获取日期字符串并将其转换为特定的 NSDate(例如 1981 年 7 月 1 日),但我没有看到设置日期的方法。有谁知道如何做到这一点?也许将 DateTime 对象转换为 NSDate?

4

5 回答 5

25

最简单的方法是从 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.Today 设置时) )。在没有复杂时区计算的情况下进行转换的最佳方法是强制使用正确的 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);
于 2011-03-20T16:18:12.540 回答
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);
}

这应该有帮助

亚历克斯

于 2011-02-03T16:47:35.137 回答
2

尝试这个:

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);
    }
于 2016-07-03T18:24:17.557 回答
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/

于 2015-02-05T07:00:58.040 回答
-2

你想看看NSDateFormatter类:)

您的代码将如下所示。. .

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

NSDate *parsed = [formatter dateFromString:dateString];

小号

PS示例从这个问题中大量复制:)

于 2010-01-27T17:22:40.697 回答