我正在为iPhone开发一个应用程序,可以将图片上传到web服务器。这些照片的文件名里有拍摄的时间。因为它们可以从世界上任何地方拍摄,所以我必须注意时区和夏时制。我想我可以使用CFAbsoluteTimeGetCurrent,那不应该是本地化的([NSDate日期]返回时间的本地化版本,有或没有"AM","PM","p.m."或任何其他变体…例如,如果您的手机设置为阿拉伯语,它将返回阿拉伯字符!)。
所以,你能建议我一个函数转换CFAbsoluteTimeGetCurrent到"MySQL like"日期,像"2011-11-03 14:12:10"吗?
我的第二个问题是:时区和夏令时呢?CFAbsoluteTimeGetCurrent总是返回一个UTC日期,不管iPhone的时区是如何设置的?它总是免dst吗?
当然,我知道本地iPhone日期/时间可能是错误的,但毫秒精度对我的应用程序并不重要:)
提前感谢!
你到底是什么意思
([NSDate date]返回时间的本地化版本,有或没有"AM","PM","p.m."或任何其他变体…例如,如果您的手机设置为阿拉伯语,它将返回阿拉伯字符!)。
[NSDate date]
返回NSDate*
对象。我假设你真正的意思是-[NSDate description]
的输出返回一个字符串在用户当前的语言环境本地化,但问题是,为什么你依赖于-[NSDate date]
的输出?如果你需要以某种方式格式化日期,你应该使用NSDateFormatter。
CFAbsoluteTime
表示一个时刻,与时区或本地化设置无关。如果你想格式化一个日期(即NSDate
对象),你应该查看NSDateFormatter
,它允许你指定输出字符串的确切格式和本地化(如果有的话)。(如果你需要在核心基础水平工作,CFDateFormatter
做同样的事情。)