Sepertinya hal yang sederhana tetapi saya tidak dapat menemukan cara untuk melakukannya.
Akan sangat bagus untuk melihat beberapa metode berbeda.
Sepertinya hal yang sederhana tetapi saya tidak dapat menemukan cara untuk melakukannya.
Akan sangat bagus untuk melihat beberapa metode berbeda.
Jawaban:
@ Jawaban Chuck benar, dan arahkan saya ke kode berikut. Kupikir aku akan berbagi:
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];
Anda bisa menggunakan ini
NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];
Semoga ini bisa membantu Anda.
Contoh seringkali merupakan cara termudah untuk belajar. Berikut ini beberapa contohnya.
Yang ini paling mudah.
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)
Ada cara lain untuk membuat tanggal juga. Jika Anda ingin mempelajarinya, serta cara menampilkan tanggal, lihat jawaban lengkap saya .
Lihat dokumentasi untuk NSDate . Anda dapat menggunakan dateFromString:
metode NSDateFormatter
atau dateFromComponents:
metode NSCalendar
.
init
?
Saya menemukan utas ini saat mencari jawaban untuk pertanyaan ini, tetapi kemudian saya menemukan contoh yang bagus di salah satu buku Pemrograman C Tujuan Peternakan Big Nerd. Penghargaan untuk mereka, bukan saya.
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];
Itu konyol, bukan?
Pertengahan 2013 lalu Apple masih belum menyediakan cara sederhana untuk menetapkan nilai NSDate.
Selama proyek iPad saya saat ini, saya tidak percaya saya harus menghentikan produktivitas untuk sementara waktu untuk menulis kelas pembantu saya sendiri untuk mendapatkan nilai Tahun dari NSDate. Maksudku, ayolah, ini hal mendasar.
Bagaimanapun, inilah kelas helper yang saya gunakan dalam proyek saya, untuk mengubah string menjadi nilai 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
Dengan menggunakan kode ini, Anda dapat menetapkan nilai NSDate menggunakan sesuatu seperti:
NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];
Catatan: fungsi ini didasarkan pada kode yang diambil dari sini: https://stackoverflow.com/a/3968411/391605
Solusi saya adalah menggunakan kode berikut, tetapi saya menemukan bahwa kadang - kadang , itu tidak dapat diurai, dan akan mengembalikan nol .
// 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];
Saya ingat itu gagal total pada "Okt 12, 2012" ... itulah sebabnya saya menyerah dan menggunakan fungsi "parseDateString" yang lebih rumit seperti yang ditunjukkan di atas.
Maksud saya adalah ... hati-hati.
Beberapa fungsi NSDate yang sangat dasar tidak berfungsi dengan baik ...
setHour
,setMinute
,setSecond
, dll untuk lebih halus granularity.