iPhone OS:の作成方法を教えてください、NSDate特定のょうか?
-
24-09-2019 - |
質問
のように簡単なものがないのですが見ついて教えてください。
なカップルを見て異なる。
解決
@チャックの答えは正しいですし、次のコードに私をリードしています。私は共有したいと思っます:
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:
を望んでます。
スイフト例
例としては、多くの場合、学ぶための最も簡単な方法です。ここではいくつかの例があります。
今すぐ
この1が最も簡単です。
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)
の詳細が必要...?
あまりにも、日付を作成するための他の方法があります。あなたはどのようにの表示の日にだけでなく、それらを、学びたい場合は、 <私のより完全な答えを見ます/ A>。
マニュアルを参照してくださいために NSDate.で利用できます dateFromString:
方法 NSDateFormatter
または dateFromComponents:
方法 NSCalendar
.
この質問への答えを探している間、私はこのスレッドを見つけましたが、その後私は1つ私のビッグオタクランチの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 の
私のソリューションのは、次のコードを使用するのされていたが、私は、のゼロの、時にはの、それだけで解析できないだろう、と戻ってくることを発見しました>。
// 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の機能の一部だけで正常に動作しません...