将 GMT 日期格式转换为基于区域设置的格式
我们如何将 GMT 格式的 NSDate 对象转换为当前区域/设备设置的日期格式?
例如,如果设备位于美国且位于 PDT 时区,那么我想将 GMT 时间转换为其等效的 PDT 时间。
How can we convert NSDate object in GMT format to the date format with current locale/device settings?
For example if a device is in US and in PDT time zone then I want to convert GMT time to its equivalent PDT time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
严格来说,您不能将
NSDate
转换为另一个时区,因为NSDate
没有任何时区的概念。NSDate
对象仅表示(绝对)时间中的单个点,而与时区无关。每当你想向用户显示日期时,你应该创建一个
NSDateFormatter
。默认情况下,它会自动显示用户所在时区的时间。您可以使用-[NSDateFormatter setTimeZone:]
覆盖它。Strictly, you cannot convert an
NSDate
to another time zone becauseNSDate
has no conception of time zones whatsoever. AnNSDate
object simply represents a single point in (absolute) time, regardless of time zone.Whenever you want to display a date to the user, you should create an
NSDateFormatter
. By default, it automatically displays time in the user's time zone. You can override this with-[NSDateFormatter setTimeZone:]
.只需使用
NSDate
方法descriptionWithCalendarFormat:timeZone:locale:
传入适当的时区即可。如果您仅使用description
方法,您将获得当前时区的日期/时间(因此,如果设备设置为 PDT,则时间将采用 PDT)。Just use the
NSDate
methoddescriptionWithCalendarFormat:timeZone:locale:
passing in the appropriate timezone. If you just use thedescription
method you get the date/time in the current timezone (so if the device is set to PDT the time will be in PDT).