相关疑难解决方法(0)

今天午夜如何获得NSDate对象?

获取表示当天午夜的NSDate对象的最有效方法是什么?

cocoa-touch objective-c nsdate

59
推荐指数
6
解决办法
3万
查看次数

NSDate表示在不同的时区,即本地时区(GMT-400)到PST

我知道如何使用NSTimeZone来获取另一个时区中当前时间的偏移量.NSDate总是相对于GMT返回,那么如何使用正确的时区信息派生字符串?也就是说,我将当前时间(在美国东部时间)中使用,并使用NSTimeZone最后减去表示PST时间所需的3小时.但我所做的就是从相对于我的时区仍然代表的时间减去3个小时.如何让NSDateFormatter使用目标时区吐出时间?

我试过的一个方法是:

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)]; // for PST
NSDateComponents *dc = [cal components: NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:now];
[cal setTimeZone:tz];
NSDate *newDate = [cal dateFromComponents:dc];
Run Code Online (Sandbox Code Playgroud)

没爱.我可以采用单独的日期组件并组成一个字符串,但它不可本地化.

一个相关的问题:

NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)]; // for PST
NSString *abbreviation = [tz abbreviation];
NSString *name = [tz name];
Run Code Online (Sandbox Code Playgroud)

两者abbreviation并name最终返回GMT-0800,而不是我期望的PST.如果我愿意的话,我甚至无法做到.我究竟做错了什么?

iphone formatting timezone date nsdate

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

nsdate ×2

cocoa-touch ×1

date ×1

formatting ×1

iphone ×1

objective-c ×1

timezone ×1