2011-10-29 22 views
7

Tôi có đối tượng NSDate mà từ đó tôi tạo hai NSStrings: Ngày và giờ. Hiện tại tôi định dạng ngày là 20111031 và thời gian là 23:15.Định dạng ngày và giờ sau cài đặt vùng hiện tại của thiết bị

Điều tôi muốn làm là định dạng nó thành thiết bị (iPhone, iPad, iPod Touch) cài đặt vùng hiện tại (không phải ngôn ngữ!). Vì vậy, ví dụ:

  • Một thiết bị thiết lập cho khu vực Mỹ sẽ hiển thị (từ đỉnh đầu của tôi) 10.31.11 và thời gian 11:15
  • Một thiết bị thiết lập cho khu vực Hà Lan sẽ hiển thị: 31- 10-2011 và thời gian 23.15
  • Một thiết bị thiết lập để khu vực Thụy Điển sẽ hiển thị: 2001/10/31 và thời gian 23:15

làm thế nào tôi có thể làm điều này?

+1

Định dạng bằng ngôn ngữ mặc định của điện thoại. –

Trả lời

37

Sau đây nên là đủ, bởi vì một NSDateFormatter có locale mặc định của điện thoại theo mặc định:

NSDate *date = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
[dateFormatter setDateStyle:NSDateFormatterShortStyle]; 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 

FYI đây là những gì sẽ xảy ra với Mỹ, Hà Lan, và Thụy Điển:

[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 
// displays 10/30/11 7:09 PM 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"]]; 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 
// displays 30-10-11 19:09 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"sv_SE"]]; 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 
// displays 2011-10-30 19:09 
+0

Rất cám ơn. Không biết điều đó. (cảm thấy hơi ngu ngốc bây giờ);) –

+2

Niềm vui của tôi! Tôi chỉ biết điều này bởi vì tôi đã dành ba ngày qua đối phó với các lỗi liên quan đến NSDate và tìm hiểu thêm về công cụ này hơn bao giờ tôi hy vọng: P – yuji

7

Nhiều mã lớn đoạn trích ở đây. Một trong những tốt hơn trong tâm trí của tôi cho các định dạng ngày quốc tế (khi tất cả tôi muốn là ngày, không phải là thời gian) là như điện thoại biết ngôn ngữ địa phương trong cài đặt:

NSDate *date = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:NSLocaleIdentifier]]; 
[dateFormatter setTimeStyle:NO]; 
[dateFormatter setDateStyle:NSDateFormatterShortStyle]; 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 
Các vấn đề liên quan