- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个只有一种语言的应用程序。在显示自日期以来的时间间隔时,我想强制使用这种语言。例如。 “9 个月前”只是用一种特定的语言而不是英语。有没有一种方法可以使用 DateComponentsFormatter 来做到这一点,否则它就可以完全按照我想对这些单位执行的操作进行操作。
func format(duration: TimeInterval) -> String {
UserDefaults.standard.set(["da"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.year, .month, .day, .hour, .minute, .second]
formatter.unitsStyle = .short
formatter.includesApproximationPhrase = true
formatter.maximumUnitCount = 1
return formatter.string(from: -duration)!
}
format(duration: self.createdDate.timeIntervalSinceNow)
这返回例如当语言为 en 时为“1 年”。我想用一种特定的语言(“yr”->“år”),对于其他允许的单位也应该这样做。
当手机设置为应用程序的语言时,它会起作用。
我尝试在创建 DateComponentsFormatter 之前设置语言,但它仍然以手机设置的语言返回。
EDIT 在下方插入工作代码
根据答案修改后的工作代码:
func format(duration: TimeInterval) -> String {
var calendar = Calendar.current
calendar.locale = Locale(identifier: "da")
let formatter = DateComponentsFormatter()
formatter.calendar = calendar
formatter.allowedUnits = [.year, .month, .day, .hour, .minute, .second]
formatter.unitsStyle = .short
formatter.includesApproximationPhrase = true
formatter.maximumUnitCount = 1
return formatter.string(from: -duration)!
}
format(duration: self.createdDate.timeIntervalSinceNow)
最佳答案
这是默认的 iOS 行为。如果您在手机上更改区域设置和语言,您会注意到日历应用程序中可能有 2 种语言。有时可以更改语言环境,但您示例中的 includesApproximationPhrase
不会被翻译:
var calendar = Calendar.current
calendar.locale = Locale(identifier: "da")
let formatter = DateComponentsFormatter()
formatter.calendar = calendar
关于ios - 强制本地化 DateComponentsFormatter 中的 allowedUnits,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41283147/
我想打印,例如,值 1.5 为“1.5 秒”,就像 Safari 的时间线那样,我正在尝试使用 DateComponentsFormatter。 不幸的是,它的 .allowedUnits只能下降到
我想将时间从秒转换为位置格式,例如 2:05 min 或 1:23 h 或 19 s。我在检索本地化时间缩写单位时遇到问题。这是我的代码。 let secs: Double = 3801 let st
我正在使用内置的 DateComponentsFormatter 来计算当前日期和另一个日期之间的年数。如果日期过去太远,例如 1940,则返回的单位是错误的: let dateComponents
我使用 DateComponentsFormatter 在 iOS 中格式化 TimeInterval。如果我得到 1:09 的结果,则应显示前导零。结果如下所示:01:09。这是否可以通过 Date
当 DateComponentsFormatter 返回意外数量的单位时,我遇到了问题。有没有人遇到同样的问题? import Foundation let formatter = DateCompo
在回答this question关于如何基于比较两个日期创建“xxx ago”字符串,我写了一个完整的问题解决方案。 它涉及使用 DateComponentsFormatter 并将 maximumU
我在 Swift 中使用以下 DateComponentsFormatter: let formatter = DateComponentsFormatter() formatter.unitsSty
因此,我在需要仅格式化给定 TimeInterval 的纳秒数的情况下使用 DateComponentsFormatter。问题是它没有按预期工作,或者我在这里混淆了一些我不知道的东西。 这里有 3
我正在使用 DateComponentsFormatter 来实现类似的目标:“1 小时 30 分钟”。这是我的代码: let formatter = DateComponentsFormatter(
情况 我有一个函数,它使用 DateComponentFormatter 的函数 fun string(from: Date, to: Date) 返回一个基于两个时间差的格式化字符串日期,它完美地工
我有一个只有一种语言的应用程序。在显示自日期以来的时间间隔时,我想强制使用这种语言。例如。 “9 个月前”只是用一种特定的语言而不是英语。有没有一种方法可以使用 DateComponentsForma
我在我的项目中使用 swift 并且我想显示这样的特定日期:5 天前或 5 个月前或 ... 我正在使用 DateComponentsFormatter 并且它运行良好,但问题是我想像“昨天”一样显示
我是一名优秀的程序员,十分优秀!