我正在尝试使用日期字符串并将其转换为特定的NSDate(例如,1981年7月1日),但我没有看到和设置日期的方法。有谁知道如何做到这一点?也许将DateTime对象转换为NSDate?
答案 0 :(得分:24)
最简单的方法是从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);
答案 1 :(得分: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);
}
这应该有帮助
亚历
答案 2 :(得分:1)
试试这个:
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);
}
答案 3 :(得分: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/
答案 4 :(得分:-2)
您想查看NSDateFormatter类:)
您的代码看起来像这样。 。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy HH:mm"];
NSDate *parsed = [formatter dateFromString:dateString];
取值
复制的PS示例