回答:
これを使えます
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
ますか?
この質問への回答を探しているときにこのスレッドを見つけましたが、Big Nerd Ranch 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値を設定できます。
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];
「2012年10月12日」で無惨に失敗したことを覚えています...そのため、上記のより複雑な「parseDateString」関数をあきらめて使用しました。
私のポイントは...注意してください。
非常に基本的なNSDate関数の一部が正しく機能しない...
setHour
、setMinute
、setSecond
、などは細かい粒度のために。