【问题标题】:NSDate Format change depending on Language (region)NSDate 格式因语言(地区)而异
【发布时间】:2016-03-29 11:44:45
【问题描述】:

在我的应用程序(使用 Swift 2)中,我有一个使用 NSDate 的函数,但是我有一个问题:根据设备上设置的语言,获得的日期不一样(例如,月份取决于语言:英语中的一月等于法语中的 Janvier)

当我有这个时:

NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: NSDateFormatterStyle.ShortStyle, timeStyle: NSDateFormatterStyle.NoStyle)

当我在美国本地化时,我得到这种格式3/29/16 但是,例如,当我在法国本地化时,我会得到不同的格式:29/03/16

无论语言是什么,我如何要求相同的日期格式(这里是美国格式)?

【问题讨论】:

  • 您现在应该知道语言环境由组件组成 - 语言和地区。语言指定日期单位的翻译方式(例如,英语中的一月、二月与法语中的 Janvier、Fevrier 相对)。日期格式不是来自语言,而是来自地区设置。

标签: swift swift2 nsdate foundation


【解决方案1】:

为此,您必须创建自己的日期格式化程序,例如

let dateFormater = NSDateFormatter()
dateFormater.dateFormat = "MM/dd/yy"
let dt = dateFormater.stringFromDate(NSDate())

您可以从Date Format Patterns阅读更多有关日期格式的信息

还有Date Formatting Programming Guide

【讨论】:

  • 这不是真的。除非您指定一个,否则 NSDateFormatter 会考虑用户的语言环境。你可以看看这个页面,developer.apple.com/library/ios/documentation/Cocoa/Conceptual/…,上面写着“虽然原则上格式字符串指定了一个固定格式,但默认情况下 NSDateFormatter 仍然考虑用户的偏好(包括语言环境设置)”
  • @GeneratorOfOne 这只会影响日历类型和 24 小时格式。请阅读以下两点相同
【解决方案2】:

使用这个,

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .ShortStyle
dateFormatter.timeStyle = .NoStyle

dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")

拥有相同格式的关键是始终使用相同的语言环境。因此,它使用英语语言环境来格式化字符串,因此它始终保持格式

M/d/yy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多