似乎是一个简单的事情,但我似乎无法找到一种方法来这样做。

这将是巨大的,看到两个不同的方法。

有帮助吗?

解决方案

@ Chuck的答案是正确的,并导致我下面的代码。想分享:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];

其他提示

可以使用此

NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];

希望这会帮助你。

如果你在谈论一个特定的日历日期,而不是UNIXy日期,你可能想NSCalendar的dateFromComponents:

夫特实例

的实例是通常的学习的最简单方法。下面是一些例子。

现在

这是一个最简单的。

let currentDateTime = Date()

2017 2月20日

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 2017
dateComponents.month = 2
dateComponents.day = 20

// Create date from components
let userCalendar = Calendar.current // user calendar
let dateThisPostWasUpdated = userCalendar.date(from: dateComponents)

1976年4月1

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1976
dateComponents.month = 4
dateComponents.day = 1

// Create date from components
let userCalendar = Calendar.current // user calendar
let appleFoundedDate = userCalendar.date(from: dateComponents)

需要更多的细节......?

有其他的方法来创建日期,太。如果您想了解这些,以及如何的显示的一个日期,然后看到我的答案更全面

请参阅的文档 NSDate.你可以使用 dateFromString: 方法 NSDateFormatterdateFromComponents: 方法 NSCalendar.

我发现这个线程,而寻找一个回答这个问题,但后来我发现在一个我的大牧场书呆子Objective-C编程书一个很好的例子。争光,而不是我。

  NSDateComponents *myBDay  =[[NSDateComponents alloc] init];
    [myBDay setDay:22];
    [myBDay setMonth: 04];
    [myBDay setYear: 1984];
    [myBDay setHour:9];
    [myBDay setMinute:25];
    [myBDay setSecond:35];

    NSCalendar *g = [[ NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *dateOfBirth = [g dateFromComponents:myBDay];

有荒谬,不是吗?

2013年中期和苹果仍然还没有提供一种简单的方式来设置的NSDate值。

在我目前的iPad项目,我简直不敢相信我不得不停止工作效率的同时,写我自己的助手,从一个NSDate拿到年终值。我的意思是,来吧,这是基本的东西。

总之,这里的在我的项目中使用,将字符串转换成一个NSDate值的辅助类I:

@implementation DateHelper

+(NSDate*)parseDateString:(NSString *)dateString
{
    NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
    [rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"];

    NSDate *theDate = nil;
    NSError *error = nil;
    if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
        NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
    }

    return theDate;
}

@end

使用此代码,你可以使用类似设置一个NSDate值:

NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];

注意:此函数是基于从这里取出的代码: https://stackoverflow.com/a/3968411/391605

我的解决方案的已经的使用下面的代码,但我发现的有时的,它只是不会解析,并会返回

//  Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value
//  THIS DOESN'T WORK !  DON'T TRUST THIS CODE !!
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate* date = [formatter dateFromString:dateString];

记得它的“2012年10月12日” ...这就是为什么我放弃了,并使用上面示出的更复杂的“parseDateString”功能非常失败。

我的意思是......要小心。

一些极基本NSDate的功能就是不正常工作...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top