我试图以 MMMM dd,EEEE 格式获取当天。而这就是我所做的
NSDate *utc = [[NSDate alloc] init];
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
NSTimeInterval timeZoneSeconds = [[NSTimeZone localTimeZone] secondsFromGMT];
NSDate *DateInLocalTimezone = [utc dateByAddingTimeInterval:timeZoneSeconds];
fmt.dateFormat = @"MMMM dd, EEEE";
NSString *currentDate = [fmt stringFromDate:DateInLocalTimezone];
鉴于,
currentDate必须是星期五的07月10日。为什么我在格式化日期时会再添加一天?
答案 0 :(得分:2)
NSDateFormatter
已经处理了时区。由于您之前为NSDate
添加了8小时,因此实际上是两次增加8小时。
现在,提示:
NSDate
是一个时间点。它计算自参考日期以来经过的秒数(我相信它是1970年1月1日00:00 GMT)。如果您确实想要在该点之前或之后引用时间,请仅更改NSDate
。将NSDate
视为时间机器。如果你通过电话与住在海外的朋友谈话,你可能会在不同的时区,所以时钟中显示的时间会有所不同,但你们都会在同一时间点。
如果您要处理时区,请使用NSCalendar
或NSDateFormatter
。他们不仅可以处理时区,还可以处理夏令时和一些东方日历。
答案 1 :(得分:1)
试试这个:
NSDate *now = NSDate.date;
NSDateFormatter *fmt = NSDateFormatter.new;
fmt.dateFormat = @"MMMM dd, EEEE";
NSString *currentDate = [fmt stringFromDate:now];