作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从日期获取 NSString,日期格式如下:
MMEEEY ww
问题出在“ww”,即一年中的第几周。我必须将此格式与从后台获取的另一种格式进行比较。但后台的第一个工作日是星期一,而 iOS 的第一个工作日是星期日。因此,当星期日时,字符串不一样,因为一年中的星期不一样。
问题是:如何强制 NSDateFormatter 使用星期一作为第一个工作日?
我尝试使用将firstWeekday属性设置为2的日历来设置NSDateFormatter的日历属性,但它不起作用。
要点:
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
calendar.firstWeekday = 2;
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.calendar = calendar;
编辑:诺亚回答后的测试
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];
dateFormatter.locale = locale;
dateFormatter.dateFormat = @"MMEEEY ww";
NSDate * date = [NSDate dateWithTimeIntervalSince1970:1330251642]; // next sunday
NSLog(@"%@ -> %@", date, [dateFormatter stringFromDate:date]);
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
calendar.firstWeekday = 2;
dateFormatter.calendar = calendar;
NSLog(@"%@ -> %@", date, [dateFormatter stringFromDate:date]);
结果:
2012-02-24 11:31:27.878 Test[2546:15203] 2012-02-26 10:20:42 +0000 -> 02Sun2012 09
2012-02-24 11:31:27.880 Test[2546:15203] 2012-02-26 10:20:42 +0000 -> 02Sun2012 09
最佳答案
根据一些测试,日期格式化程序似乎确实支持日历设置。也许您可以举例说明您尝试格式化的日期、您想要的结果以及您获得的结果。
NSDateFormatter * df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMEEEY ww"];
NSDate *date;
date = [NSDate dateWithString:@"2012-01-01 12:00:00 +0000"];
NSLog(@"%@ -> %@", date, [df stringFromDate:date]);
date = [NSDate dateWithString:@"2012-01-02 12:00:00 +0000"];
NSLog(@"%@ -> %@", date, [df stringFromDate:date]);
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
calendar.firstWeekday = 2;
df.calendar = calendar;
date = [NSDate dateWithString:@"2012-01-01 12:00:00 +0000"];
NSLog(@"%@ -> %@", date, [df stringFromDate:date]);
date = [NSDate dateWithString:@"2012-01-02 12:00:00 +0000"];
NSLog(@"%@ -> %@", date, [df stringFromDate:date]);
结果:
2012-02-22 12:42:17.020 test[68385:207] 2012-01-01 12:00:00 +0000 -> 01Sun2012 01
2012-02-22 12:42:17.021 test[68385:207] 2012-01-02 12:00:00 +0000 -> 01Mon2012 01
2012-02-22 12:42:17.022 test[68385:207] 2012-01-01 12:00:00 +0000 -> 01Sun2011 52
2012-02-22 12:42:17.022 test[68385:207] 2012-01-02 12:00:00 +0000 -> 01Mon2012 01
我不确定您是否想要 2011 年第 52 周的 1/1/12 部分,但这就是为什么我要问您想要什么结果。
关于iphone - NSDateFormatter:一年中的第几周和第一个工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9360474/
我不太擅长处理日期时间。我用了momentjs用于操纵时间的 ionic 应用,但我想实现一些我无法做到的事情。 我为此使用了一个管道,我想根据已经过去了多少天或者几周、几个月或几年来显示。使用相对时
我是一名优秀的程序员,十分优秀!