看起来很简单,但我似乎找不到方法去实现。
能够提供几种不同的方法将会非常好。
看起来很简单,但我似乎找不到方法去实现。
能够提供几种不同的方法将会非常好。
@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];
希望这可以帮到你。
dateFromComponents:
方法。示例通常是学习的最简单方式。以下是一些示例。
这个是最容易的。
let currentDateTime = Date()
// 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)
// 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)
还有其他创建日期的方式。如果你想学习这些方法,以及如何显示日期,请查看我的详细回答。
NSDateFormatter
的dateFromString:
方法或NSCalendar
的dateFromComponents:
方法来操作日期。请注意保留HTML标记。我在寻找答案的过程中发现了这个帖子,但后来在我一本《大脑壳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 年中期,Apple 还没有提供一种简单的方法来设置 NSDate 值。
在我的 iPad 项目中,我简直无法相信我必须停下生产力一段时间来编写自己的辅助类来获取 NSDate 的年份值。我是说,拜托,这是基本的东西。
无论如何,这是我在项目中使用的辅助类,将字符串转换为 NSDate 值:
@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* date = [DateHelper parseDateString:@"Jul 16, 2013"];
// 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];
+(NSDate *) MakeNSDate : (int) year : (int) month : (int) day : (int) hour : (int) min : (int) sec
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
NSDate *dtRet = [dateFormatter dateFromString:[NSString stringWithFormat:@"%4d/%02d/%2d %02d:%02d:%02d", year, month, day, hour, min, sec]];
return dtRet;
}
setHour
、setMinute
、setSecond
等方法,精确度更高。 - devios1