Jen*_*all 35 xcode nsdate nsdateformatter ios
好的.我们遇到的问题是我们的NSStrings填充了yyyyMMdd格式的日期,我们想要做的是获取当前的工作日和月份名称.函数dagOmvandlare将日期字符串转换为工作日和月份.然后在viewDidload上调用该函数,将所有按钮标题命名为从英语到瑞典语.
我们目前的解决方案看起来像这样:
-(NSString *)dagOmvandlare:(id) suprDatum{
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyyMMdd";
NSDate *date = [dateFormatter dateFromString:suprDatum];
NSString * monthString = [date descriptionWithCalendarFormat:@"%B"timeZone:nil
locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];
if ([monthString isEqualToString:@"January"]) {
monthString = @"Januari";
}
else
if ([monthString isEqualToString:@"February"]) {
monthString = @"Februari";
}
else
if ([monthString isEqualToString:@"May"]) {
monthString = @"Maj";
}
else
if ([monthString isEqualToString:@"June"]) {
monthString = @"Juni";
}
else
if ([monthString isEqualToString:@"July"]) {
monthString = @"Juli";
}
else
if ([monthString isEqualToString:@"August"]) {
monthString = @"Augusti";
}
else
if ([monthString isEqualToString:@"October"]) {
monthString = @"Oktober";
}
else
if ([monthString isEqualToString:@"March"]) {
monthString = @"Mars";
}
return monthString;
}
- (void)viewDidLoad {
[super viewDidLoad];
[button3 setTitle:(NSString *)[self dagOmvandlare:self.datum1] forState:UIControlStateNormal];
[button2 setTitle:(NSString *)[self dagOmvandlare:self.datum2] forState:UIControlStateNormal];
[bmanad1 setTitle:(NSString *)[self dagOmvandlare:self.datum3] forState:UIControlStateNormal];
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我们已经想到的是
NSString * monthString = [date descriptionWithCalendarFormat:@"%B"timeZone:nil
locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];
Run Code Online (Sandbox Code Playgroud)
Apple公司关于非公开API的准则不允许使用.所以主要的问题是,有什么其他方式可以获得工作日和月份名称,其中包含日期格式为yyyyMMdd的日期字符串?
Nic*_*ore 84
无需手动转换为瑞典语单词.iPhone会为你做的.试试这个:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyyMMdd";
NSDate *date = [dateFormatter dateFromString:@"20111010"];
// set swedish locale
dateFormatter.locale=[[NSLocale alloc] initWithLocaleIdentifier:@"sv_SE"];
dateFormatter.dateFormat=@"MMMM";
NSString *monthString = [[dateFormatter stringFromDate:date] capitalizedString];
NSLog(@"month: %@", monthString);
dateFormatter.dateFormat=@"EEEE";
NSString *dayString = [[dateFormatter stringFromDate:date] capitalizedString];
NSLog(@"day: %@", dayString);
Run Code Online (Sandbox Code Playgroud)
输出:
month: Oktober
day: Måndag
Run Code Online (Sandbox Code Playgroud)
bra*_*ipt 11
简单的Swift 3扩展:
// Weekday
extension Date {
func dayOfWeek() -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE"
return dateFormatter.string(from: self).capitalized
// or capitalized(with: locale)
}
}
print(Date().dayOfWeek()!) // Wednesday
// Month Name
extension Date {
func monthName() -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM"
return dateFormatter.string(from: self).capitalized
// or capitalized(with: locale)
}
}
print(Date().monthName()!) // October
Run Code Online (Sandbox Code Playgroud)
NSString *strDate=@"20110407";
NSDateFormatter *df=[[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"yyyyMMdd"];
NSDate *targetDate=[df dateFromString:strDate];
[df setDateFormat:@"EEEE MMMM dd, yyyy"];
NSString *s=[df stringFromDate:targetDate];
NSLog(@"Date: %@", s);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
NSInteger year = [dateComponents year];
NSInteger month = [dateComponents month];
NSInteger day = [dateComponents day];
NSInteger hour = [dateComponents hour];
NSInteger minute = [dateComponents minute];
NSInteger second = [dateComponents second];
[calendar release];
Run Code Online (Sandbox Code Playgroud)
这可能很有用
另一个可以帮助你的SO问题如何使用NSDate从今天的日期找到工作日?
归档时间: |
|
查看次数: |
45860 次 |
最近记录: |