相关疑难解决方法(0)

检测时间格式是否为12小时或24小时格式

有没有办法检测应用程序的当前设备是否使用12h我们的24h格式,以便我可以使用一个NSDateFormatter 12h和一个24h取决于用户语言/ loaction设置?就像UIDatePicker检测并显示AM/PM选择器(如果它是12h格式).

cocoa-touch objective-c nstimezone ios

39
推荐指数
3
解决办法
2万
查看次数

如何检查手机时间格式是否设置为24小时?

我正在Swift 2中构建一个闹钟应用程序.我似乎无法找到一个合适的方法来确定手机是否设置为24小时.另外我无法将模拟器更改为24小时工作,所以我甚至无法通过播放时间设置来测试一些替代方案.有任何想法吗?

ios swift

22
推荐指数
1
解决办法
5813
查看次数

当ios中的地区是"英国"时,如何获得系统时间格式?

我在ios中使用以下代码获取系统时间格式.当我目前的地区设置为"United State"时它工作正常,但是当我将该地区从"United State"改为"United Kingdom"时,它总是给出12小时的合成.

#pragma mark
#pragma mark - get system time
-(BOOL)getSystemTimeFormat
{
    NSString *strDateFormate = @"hh a";
    NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:strDateFormate options:0 locale:[NSLocale currentLocale]];
    if ([dateFormat rangeOfString:@"h"].location != NSNotFound)
    {
        [kNSUserDefaults setBool:YES forKey:@"TimeFormat"];
        [kNSUserDefaults synchronize];
        return YES;
    }
    else
    {
        [kNSUserDefaults setBool:NO forKey:@"TimeFormat"];
        [kNSUserDefaults synchronize];
        return NO;
    }

}
Run Code Online (Sandbox Code Playgroud)

"美国"地区的日志::

2015-01-27 11:32:16.090 [350:60b] 12 Formate :: 0
2015-01-27 11:32:16.585 [350:60b] Connect
2015-01-27 11:32:16.591 [350:60b ]位置更新...
2015-01-27 11:32:16.604 [350:60b]位置更新...
2015-01-27 11:32:16.622 [350:60b]位置更新...

"英国"地区的日志::

2015-01-27 11:33:35.785 [364:60b] 12 Formate …

iphone objective-c nsdateformatter date-formatting ios

14
推荐指数
1
解决办法
945
查看次数

检测iPhone是否在12小时或24小时模式下显示时间?

如何检测iPhone是否在12小时或24小时模式下显示时间?

我当前监视当前区域的变化,但这不是影响时间显示的唯一设置.日期和时间设置中的24小时切换会覆盖当前区域设置.

有没有办法检测这个12/14小时的设置?

iphone localization regional

10
推荐指数
1
解决办法
4928
查看次数

如何在 iOS/Xamarin 上获取时间格式(24/12 小时)的设备设置

我需要从代码访问 iOS 设备的设备设置,并获取指定时间是否显示为 12 小时或 24 小时格式的设置。我可以使用“NSLocale.CurrentLocale”属性,但它只有给定语言环境的默认时间格式,而不是设备设置,不是吗?我还没有在网上找到相关信息,所以我在这里寻求帮助。

c# ios xamarin

2
推荐指数
1
解决办法
633
查看次数

您如何在DateFormatters的Date&Time设置中正确支持iOS 12小时/ 24小时覆盖?

如果您的iOS设备设置为使用默认为12小时制的区域(例如美国),并且您具有如下DateFormatter设置:

var dateFormatter: DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateFormat = "h:mm a"

    return formatter
}()
Run Code Online (Sandbox Code Playgroud)

然后,它会输出,如果“24小时时间”开关接通的24小时格式的时间ON的日期和时间设置在iOS中。

如果您的自定义日期格式为“ H:mm”(即24小时),而您仍处于默认的12h区域,则无论24小时开关的打开/关闭状态如何,它都将输出24小时时间。

好的,很好,很简单,我将使用“ h:mm a”,然后用户将根据自己喜欢的格式看到显示的任何时间。但是,如果您将区域更改为默认情况下使用24小时制的区域,则行为会相反!如果您具有“ H:mm”并且24小时制时间开关处于OFF位置,它将更改为12小时制(“ h:mm a”)。

是的,通常可以通过使用时间样式(formatter.timeStyle = .short例如,)而不是使用自定义日期格式来避免这种情况,但是如果您需要自定义日期格式并且要遵守用户的设置,应该怎么办?(例如,如果您需要在字符串中插入一些自定义字符,或者只是想按非标准顺序使用组件)

我想在这里也要吃蛋糕的唯一方法是提前检查用户的喜好(据我所知,您实际上不能直接做)或语言环境的默认设置是(我虽然看不到任何方法来做),然后相应地调整格式…

我做了这个Xcode项目,以更清楚地演示该问题(显然,它必须在设备上运行,因为模拟器上没有24小时切换)。

我知道有各种各样的解决方法,但是如果您要制作的应用程序使用自定义日期/时间格式作为UI并具有来自世界不同地区的用户,那么我不希望Apple期望您做什么。我是否缺少某些东西,或者这是iOS中的缺陷?

注意:此问题专门用于将日期转换为字符串以供显示,因此,我希望尽可能遵守用户的语言环境和其他设置。我知道您可以将语言环境设置为en_POSIX等,但这不能解决问题。我也希望尽可能地做到无缝,并充分利用内置的功能,但这似乎不可能实现,除非您仅将目标用户设置为具有相同默认24小时制的地区…

locale ios regional-settings swift dateformatter

2
推荐指数
1
解决办法
1482
查看次数