Здається, це проста річ, але я не можу знайти спосіб зробити це.
Було б чудово побачити пару різних методів.
Здається, це проста річ, але я не можу знайти спосіб зробити це.
Було б чудово побачити пару різних методів.
Відповіді:
@ Відповідь Чак правильна, і приведи мене до наступного коду. Думав, що я поділюсь:
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];
Сподіваюсь, це допоможе тобі.
Приклади часто найпростіший спосіб вчитися. Ось кілька прикладів.
Цей найпростіший.
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)
Є й інші способи створення дат. Якщо ви хочете дізнатися про них, а також про те, як відобразити дату, то дивіться мою більш повну відповідь .
Дивіться документацію для NSDate . Ви можете використовувати dateFromString:
метод NSDateFormatter
або dateFromComponents:
метод NSCalendar
.
init
?
Я знайшов цю тему, шукаючи відповідь на це запитання, але потім знайшов хороший приклад в одній моїй книзі програмування «Великий нерв-ранчо». Кредит їм, а не мені.
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, використовуючи щось на зразок:
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];
Я пам’ятаю, що він невдало провалився 12 жовтня 2012 року ... саме тому я відмовився від використання складнішої функції «parseDateString», показаної вище.
Моя думка ... будьте обережні.
Деякі дуже основні функції NSDate просто не працюють належним чином ...
setHour
,setMinute
,setSecond
і т.д. для більш тонкої зернистості.