当前位置: 首页 > 面试题库 >

NSDateFormatter时间格式取决于语言环境

锺博耘
2023-03-14
问题内容

我遇到了一个非常奇怪的问题,听起来像是系统错误。我只想使用小时和分钟信息来格式化日期,并在必要时显示AM / PM。

这是我的代码:

extension NSDate {

    func localizedStringTime()->String {

        let dateFormatter = NSDateFormatter()
        dateFormatter.locale = NSLocale.currentLocale()
        dateFormatter.dateFormat = "HH:mm"
    }
}

如您所见,我正在使用HH而不使用,hh并且如Apple文档所述,如果用户选择12h格式,它应该自动添加AM / PM:

时间的表示可能是13:00。但是,在iOS中,如果用户将24小时制切换为关闭,则时间可能是1:00 pm。

我发现它可以在我的设备(我位于欧洲)上完美运行,但是在美国设备和模拟器上却无法运行,即使用户选择了12h格式,它仍然会返回24h格式。我也曾尝试将“地区”更改为“美国”,但是从我的设备上它仍然可以正常工作。

您看到我的代码有任何问题吗?反正这个问题也是


问题答案:

您可以像这样使用date函数中的本地化字符串…

extension NSDate {
    func localizedStringTime()->String {
        return NSDateFormatter.localizedStringFromDate(self, dateStyle: NSDateFormatterStyle.NoStyle, timeStyle: NSDateFormatterStyle.ShortStyle)
    }
}


 类似资料:
  • 问题内容: 我是Java和Android开发的新手,所以这可能是一个愚蠢的问题,但是我已经搜寻了好几天,却找不到解决方案: 我尝试根据用户的语言环境输出a 。 在StackOverflow上搜索使我想到了这一点: 输出: 在我的法语本地电话上。差不多了 我如何也输出 小时,分钟和秒部分 的,使用用户的语言环境?我一直在寻找android文档,但找不到任何东西。 非常感谢。 问题答案: 用 参考:h

  • 问题内容: 我住在比利时。通常,在数学中,我们用这样的逗号来写小数:3,141592 这也是 格式化 浮点数时的结果。 因此,通过替换像这样:。因此,总是在需要一个点时,我必须添加以下内容: 因此,问题是:有没有一种方法可以更改语言环境,从而使Java中的每个格式化程序都使用点而不是逗号? 谢谢 版画 问题答案: 尝试仅用于设置格式化期间使用的语言环境。

  • 确定当前给定区域设置的短日期格式的最佳方法是什么? 例如,如果我的脚本的语言环境设置为荷兰语,我希望以某种方式获得该特定语言环境中使用的短日期格式,它将是: 年月日 如果设置为American,我希望获得美国地区的日期格式: 年月日 等等

  • 问题内容: 我试图根据给定的语言环境以不同的方式格式化Java中的日期。例如,我希望英语用户看到“ 2009年11月1日”(格式为“ MMM d,yyyy”),而挪威用户希望看到“ 1. nov。2009”(“ d。MMM。yyyy”)。 如果将语言环境添加到SimpleDateFormat构造函数中,则月份部分工作正常,但是其余部分呢? 我希望可以将与语言环境配对的格式字符串添加到SimpleD

  • 本文向大家介绍C#留言时间格式化,包括了C#留言时间格式化的使用技巧和注意事项,需要的朋友参考一下 平台:Vs2012 主要实现例如空间发表说说时间的显示,如:某人在10秒前回复了你这种效果,可用在Web浏览器,窗体,等... 计算两个时间差值的函数,返回时间差的绝对值: 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 问题内容: 我有一个奇怪的问题,当我创建一个具有区域设置的日历时,TimeZone只是还原为本地日历 这是输出: 如何从特定的语言环境中获取适当的时间? 问题答案: 简短的答案:您不能。 长话大说:没有“语言环境的正确时区”之类的东西。这仅仅是因为有些国家/地区具有多个时区(例如美国)。时区是一个不同的概念。 无论如何,您正在寻找解决问题的方法。我猜您正在编写Web应用程序,并且看到时区已恢复为服