In that case, see if a call like this would work for you in all supported
locales:
Objective-C
formattedDate = [NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterShortStyle];
or:
Swift
let formattedDate = DateFormatter.localizedString
(from:date,dateStyle:.none,timeStyle:.short)
If that doesn’t work, look at the comparable method in
NSDateComponentsFormatter.
--
Gary L. Wade
http://www.garywade.com/ <http://www.garywade.com/>
> On Jan 3, 2017, at 4:12 PM, Sandor Szatmari <[email protected]>
> wrote:
>
> Gary,
>
> On Jan 3, 2017, at 18:40, Gary L. Wade <[email protected]
> <mailto:[email protected]>> wrote:
>
>> What I’m getting at is how relevant is it to your app that you know if and
>> where the time-of-day indicators exist in addition to the 24-hour setting.
>> Answering those questions should be what determines your next steps.
>> As mentioned, the alarm clock has a long history on the Mac whereas the
>> Unicode underpinnings for these locale settings are "relatively recent.” If
>> all you care about is putting out a time, try using
>> localizedStringFromDate:….
> All I ever display is hours and minutes for the purposes of this app. This
> is the simple part. It was deciding whether or not to display 24 or 12 hour
> time which was at question.
>
>> If you absolutely have to have full control over the format string, unless
>> the user wants a change, always use the system settings, and model your
>> override UI after that provided in the system preferences.
> Yea, I thought about duplicating the system's UI, but I find it hard to
> decide to emulate something I think could be better. But, it might be the
> most consistent experience for the user.
>
>> If you’re wanting even greater details, try looking for IBM’s ICU test
>> pages;
> Great suggestion, thanks!
>
> Sandor
>
>> I’m sure they’re still around somewhere, and they allow you to run through
>> all locales in existence, even some that Apple may not currently support.
>> --
>> Gary L. Wade
>> http://www.garywade.com/ <http://www.garywade.com/>
>>> On Jan 3, 2017, at 1:02 PM, Sandor Szatmari <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>> Gary,
>>>
>>> On Jan 3, 2017, at 14:52, Gary L. Wade <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>>> Is there a problem with using +[NSDateFormatter
>>>> localizedStringFromDate:dateStyle:timeStyle:]? Depending on your needs,
>>>> you might also consider +[NSCalendar autoupdatingCurrentCalendar].
>>>
>>> I am looking for detecting whether or not the system defaults to 12 or 24
>>> hr time. The obj-c method I'm already 'parsing',
>>> -dateFormatFromTemplate:::, returns a template string with well defined
>>> formatting tokens that are easy to detect. Plus they directly reflect the
>>> user's Locale & Region settings.
>>>>
>>>>
>>>> A user typically “sets” their region settings when they set up their Mac,
>>>> and the choice of 12/24 hour display defaults to what the selected region
>>>> uses. Few people change things after that, although I am, preferring a
>>>> four-digit year vs two-digit for the short date format.
>>>
>>> Great point! This is exactly why I wanted to follow a user's Locale & Date
>>> preference. The only issue I had was that the preference's place of
>>> definition appeared vague to me. It is tenuously tied to the Date & Time
>>> preference for the menu bar clock. Your point is good because user's
>>> decide this once, early on. Why should they have to specify it for every
>>> application. Maybe providing an option to override the default behavior is
>>> the way to go. Maybe a three state toggle or matrix.
>>>
>>> A. Follow Locale & Region
>>> B. Override with 12 hr
>>> C. Override with 24 hr
>>>
>>> There is some redundancy in there depending on the Locale & Region setting
>>> but, at least to me it's self explanatory. Is that too confusing?
>>>
>>> Thanks,
>>> Sandor
>>>
>>>> --
>>>> Gary L. Wade
>>>> http://www.garywade.com/ <http://www.garywade.com/>
>>>>> On Jan 3, 2017, at 8:34 AM, Sandor Szatmari <[email protected]
>>>>> <mailto:[email protected]>> wrote:
>>>>>
>>>>> Jeremy,
>>>>>
>>>>>> On Jan 3, 2017, at 10:30, Jeremy Pereira
>>>>>> <[email protected]
>>>>>> <mailto:[email protected]>> wrote:
>>>>>>
>>>>>>
>>>>>>> On 3 Jan 2017, at 06:16, Sandor Szatmari <[email protected]
>>>>>>> <mailto:[email protected]>> wrote:
>>>>>>>
>>>>>>> I am working on a small application where the primary function is to
>>>>>>> display the time to the user. My hope was to honor the user's
>>>>>>> preference setting. I am either missing something or honoring the
>>>>>>> user's preference is harder than expected.
>>>>>>>
>>>>>>> So, there are two places to set 24 hr time display.
>>>>>>>
>>>>>>> 1. Date & Time preference panel
>>>>>>> 2. Language & Region preference panel
>>>>>>>
>>>>>>> The cocoa frameworks react differently depending on where you set this.
>>>>>>>
>>>>>>> If set by method 1, cocoa frameworks seem unaware of this setting and
>>>>>>> it appears this is cosmetic in that it only affects the display of the
>>>>>>> clock in the NSStatusBar.
>>>>>>>
>>>>>>> If set by method 2, cocoa frameworks reflect this and the Date & Time
>>>>>>> setting is disabled noting that the setting has been overridden.
>>>>>>>
>>>>>>> So if a user uses method 1, potentially unaware of method 2, how should
>>>>>>> one go about determining the user's intentions.
>>>>>>
>>>>>> It seems obvious to me that method 1 only refers to the clock display in
>>>>>> the menu bar and nothing else. It’s a sub setting of
>>>>>> “Show date and time in the menu bar”.
>>>>>>
>>>>>> If you honour whatever preference is set by method 2 as your code
>>>>>> fragment below does, you’ll be fine.
>>>>>>
>>>>> I feel like fewer people use/find method 2, simply stopping at method 1.
>>>>> This may be a gross assumption on my part. Under my assumption they
>>>>> would simply think my app doesn't display 24 hr time or respect the
>>>>> system setting. Am I being to sensitive here?
>>>>>
>>>>> Sandor
>>>>>>
>>>>>>>
>>>>>>> There are deprecated methods using: (didn't try, it's deprecated)
>>>>>>> NSUserDefaults with the key NSShortTimeDateFormatString
>>>>>>>
>>>>>>> There are supported methods using: (works with method 2)
>>>>>>> NSString *format = [NSDateFormatter dateFormatFromTemplate:@"j"
>>>>>>> options:0 locale:[NSLocale currentLocale]];
>>>>>>> BOOL is24Hour = ([format rangeOfString:@"a"].location == NSNotFound);
>>>>>>>
>>>>>>> Can anyone provide any clarity here?
>>>>>>>
>>>>>>> Sandor
>>>>>>> _______________________________________________
>>>>>>>
>>>>>>> Cocoa-dev mailing list ([email protected]
>>>>>>> <mailto:[email protected]>)
>>>>>>>
>>>>>>> Please do not post admin requests or moderator comments to the list.
>>>>>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>>>>>> <http://lists.apple.com/>
>>>>>>>
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> https://lists.apple.com/mailman/options/cocoa-dev/adc%40jeremyp.net
>>>>>>> <https://lists.apple.com/mailman/options/cocoa-dev/adc%40jeremyp.net>
>>>>>>>
>>>>>>> This email sent to [email protected] <mailto:[email protected]>
>>>>>>
>>>>>> --
>>>>>> Jeremy Pereira
>>>>>> [email protected]
>>>>>> <mailto:[email protected]>
>>>>>> 07884 265457
>>>>
>>
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]