这似乎是一件很简单的事情,但我似乎找不到方法去做。如果能看到几种不同的方法就好了。
kyxcudwk1#
我用Objective-C写的。它不是高效的,而是简单的。
+(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;}
+(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;
}
字符串
nhaq1z212#
@Chuck的答案是正确的,并将我引导到以下代码。我想分享一下:
NSDateComponents *comps = [[NSDateComponents alloc] init];[comps setDay:10];[comps setMonth:10];[comps setYear:2010];NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];
v8wbuo2f3#
你可以用这个
NSString *dateString = @"03-Sep-11";NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];dateFormatter.dateFormat = @"dd-MMM-yy";NSDate *date = [dateFormatter dateFromString:dateString];
NSString *dateString = @"03-Sep-11";
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];
字符串希望这能帮到你。
gr8qqesn4#
如果您正在谈论特定的日历日期而不是UNIX日期,您可能需要NSCalendar的dateFromComponents:。
dateFromComponents:
nkkqxpd95#
例子往往是最简单的学习方法。这里有几个例子。
这是最简单的。
let currentDateTime = Date()
// Specify date componentsvar dateComponents = DateComponents()dateComponents.year = 2017dateComponents.month = 2dateComponents.day = 20// Create date from componentslet userCalendar = Calendar.current // user calendarlet dateThisPostWasUpdated = userCalendar.date(from: dateComponents)
// 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 componentsvar dateComponents = DateComponents()dateComponents.year = 1976dateComponents.month = 4dateComponents.day = 1// Create date from componentslet userCalendar = Calendar.current // user calendarlet appleFoundedDate = userCalendar.date(from: dateComponents)
dateComponents.year = 1976
dateComponents.month = 4
dateComponents.day = 1
let appleFoundedDate = userCalendar.date(from: dateComponents)
型
也有其他方法来创建日期。如果你想学习这些,以及如何显示日期,那么see my fuller answer。
ds97pgxw6#
请参阅NSDate的文档。您可以使用NSDateFormatter的dateFromString:方法或NSCalendar的dateFromComponents:方法。
NSDateFormatter
dateFromString:
NSCalendar
f4t66c6m7#
我在寻找这个问题的答案时发现了这个线程,但后来我在我的Big Nerd Ranch Objective-C Programming书中找到了一个很好的例子。这是他们的功劳,不是我。
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];
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];
mwyxok5s8#
很荒谬,不是吗?2013年年中,苹果 * 仍然 * 没有提供一个简单的方法来设置NSDate值。在我目前的iPad项目中,我简直不敢相信我不得不停止生产力一段时间来编写我自己的助手类,以从NSDate中获取Year值。我是说,拜托,这是基本的东西。无论如何,下面是我在项目中使用的helper类,用于将字符串转换为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
@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我的解决方案是使用下面的代码,但我发现有时候,它无法解析,并返回nil。
// 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];
// 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函数不能正常工作……
8条答案
按热度按时间kyxcudwk1#
我用Objective-C写的。它不是高效的,而是简单的。
字符串
nhaq1z212#
@Chuck的答案是正确的,并将我引导到以下代码。我想分享一下:
字符串
v8wbuo2f3#
你可以用这个
字符串
希望这能帮到你。
gr8qqesn4#
如果您正在谈论特定的日历日期而不是UNIX日期,您可能需要NSCalendar的
dateFromComponents:
。nkkqxpd95#
Swift示例
例子往往是最简单的学习方法。这里有几个例子。
现在
这是最简单的。
字符串
2017年2月20日
型
1976年4月1日
型
需要更多详细信息...?
也有其他方法来创建日期。如果你想学习这些,以及如何显示日期,那么see my fuller answer。
ds97pgxw6#
请参阅NSDate的文档。您可以使用
NSDateFormatter
的dateFromString:
方法或NSCalendar
的dateFromComponents:
方法。f4t66c6m7#
我在寻找这个问题的答案时发现了这个线程,但后来我在我的Big Nerd Ranch Objective-C Programming书中找到了一个很好的例子。这是他们的功劳,不是我。
字符串
mwyxok5s8#
很荒谬,不是吗?
2013年年中,苹果 * 仍然 * 没有提供一个简单的方法来设置NSDate值。
在我目前的iPad项目中,我简直不敢相信我不得不停止生产力一段时间来编写我自己的助手类,以从NSDate中获取Year值。我是说,拜托,这是基本的东西。
无论如何,下面是我在项目中使用的helper类,用于将字符串转换为NSDate值:
字符串
使用此代码,您可以使用以下内容设置NSDate值:
型
注意:此函数基于以下代码:https://stackoverflow.com/a/3968411/391605
我的解决方案是使用下面的代码,但我发现有时候,它无法解析,并返回nil。
型
我记得它在“2012年10月12日”惨败...这就是为什么我放弃并使用上面显示的更复杂的“parseDateString”函数。
我的意思是...小心点。
一些非常基本的NSDate函数不能正常工作……