创建 NSDate Monotouch

发布于 2024-08-19 12:50:25 字数 108 浏览 3 评论 0原文

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

I am trying to take a date string and turn it into a specific NSDate (eg. July 1, 1981), but I don't see and methods for setting the date. Does anyone know how to accomplish this? Perhaps convert a DateTime object to NSDate?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

逆光下的微笑 2024-08-26 12:50: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);

The easiest way is to set it from DateTime.

REVISION: The NSDate conversion operators are now explicit, not implicit anymore! I updated the example below.

If you look at the NSDate prototype you will find two operators:

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

These two will do the conversion for you.

Explicit conversion of NSDate to and from DateTime is quite good, but you must be aware that NSDate is always an UTC time and DateTime is default set to DateTimeKind.Unspecified (when read from database) or DateTimeKind.Locale (when set with DateTime.Today).
The best way to convert without complicated time-zone computations is to force the right 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);
葵雨 2024-08-26 12:50:25
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);
}

这应该对

亚历克斯有帮助

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

This should help

Alex

幻梦 2024-08-26 12:50:25

试试这个:

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

Try this:

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);
    }
你与昨日 2024-08-26 12:50:25
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/

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

Source : https://theweeklybyte.wordpress.com/2014/05/27/convert-datetime-to-nsdate-and-back/

勿忘初心 2024-08-26 12:50:25

您想查看 NSDateFormatter 类:)

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

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

NSDate *parsed = [formatter dateFromString:dateString];

S

PS 示例从此问题大量复制:)

You want to look at the NSDateFormatter class :)

Your code will look something like this . . .

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

NSDate *parsed = [formatter dateFromString:dateString];

S

PS Example liberally copied from this question :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文