2011-05-09 17 views
10

Büyük bir çılgınlık problemi var.NSDateformatter setDateFormat currentLocale'ye göre

3 dizim var: yıl, ay ve gün. MMM/gg/yyyy

o DATEFORMAT/AAA/yyyy

dd edilmelidir fr_FR ise: Ben currentLocale LocaleIdentifier benim DATEFORMAT olmalıdır tr ise öylesine yani currentLocale göre doğru biçimde bir tarih olması gerekir

Bunu yapmanın tek yolunun currentLocale localeIdentifier değerini almak ve eğer varsa bir demet ile başlamak olduğunu düşünmüyorum.

Şimdiden teşekkürler. NSDateComponents de

Max

cevap

7

Bak o zaman, bir NSDate oluşturmak biçimlendirmek için NSDateFormatter kullanmak. NSDateFormatter, biçim stiline bağlı olarak tarihleri ​​biçimlendirmek için geçerli yerel ayarı kullanır (ör.
NSDateFormatterMediumStyle). Sorunuzu anlıyorsanız, NSDateFormatter cihazınızı kullanıcının cihazının yerel ayarına ayarlamak istersiniz.

+0

temel alınarak nasıl yapıldığını anlamak için bu bağlantıya bir göz atın. NSDateComponents yardımcı oldu. – masgar

34

Bunun için sadece böyle bir şey yapabilirsiniz:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
[dateFormatter setLocale:[NSLocale currentLocale]]; 
NSDate *date = [NSDate date]; 
NSString *dateString = [dateFormatter stringFromDate:date]; 
+0

Mükemmel! Teşekkür ederim. – Septronic

2
-(NSString *) stringFromDate:(NSDate *) date{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

    [dateFormatter setLocale:[NSLocale currentLocale]]; 

    NSString *dateString = [dateFormatter stringFromDate:date]; 

    [dateFormatter release]; 

    return dateString; 
} 

-(NSDate *) dateFromString:(NSString *) dateInString{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

    [dateFormatter setLocale:[NSLocale currentLocale]]; 

    NSDate *dateFromString = [dateFormatter dateFromString:dateInString]; 

    [dateFormatter release]; 

    return dateFromString; 
} 

umarım bu yardımcı olur. durumda

3

:

let formatter = DateFormatter() 
formatter.dateStyle = .medium 
formatter.timeStyle = .none 
formatter.locale = Locale.current 
let date = Date() 
let dateString = formatter.string(from: date) 
print(dateString) 
+0

NSLocale.currentLocale() artık çalışmıyor –