Locale query

2014-11-13 Thread Jonathan Mitchell
I have an app that must process sqlite hosted data that contains Gregorian UTC 
dates.
I want to ignore the local locale entirely and use Gregorian UTC through out.

At present I am carefully configuring all my NSDatePickers controls and all 
NSDateComponents calculations to use a specified Gregorian UTC timezoned 
calendar.

Is this the best I can do, or am I missing a trick somewhere?

.NET has the concept of a thread culture that defines this sort of thing for a 
given thread..

Thanks

Jonathan













___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Re: Locale query

2014-11-13 Thread Jonathan Mitchell

> On 13 Nov 2014, at 15:23, John Joyce  wrote:
> 
> 
>> On Nov 13, 2014, at 9:54 PM, Jonathan Mitchell  
>> wrote:
>> 
>> I have an app that must process sqlite hosted data that contains Gregorian 
>> UTC dates.
>> I want to ignore the local locale entirely and use Gregorian UTC through out.
>> 
>> At present I am carefully configuring all my NSDatePickers controls and all 
>> NSDateComponents calculations to use a specified Gregorian UTC timezoned 
>> calendar.
>> 
>> Is this the best I can do, or am I missing a trick somewhere?
>> 
>> .NET has the concept of a thread culture that defines this sort of thing for 
>> a given thread..
>> 
>> Thanks
>> 
>> Jonathan
>> 
> If you want to present things to users well, it is generally easier for 
> people to think in their own locale.
> Better to calculate than they have to think about the difference.
> If the user story is one where they would actively think in Gregorian UTC, 
> then it could be reasonable to do what you’re doing.
I think this is the case here.
The app performs financial calculations that are valid in one timezone.
If the user locates to a different timezone the apps calculations must still 
reference the initial timezone.
Failure to do this causes miscalculation.

> There are lots of conveniences added in the 10.9 SDK for calendrical 
> calculation, and in general, it is easier for all to work in 
> NSDate/NSTimeInterval (time since reference date) for calculation and then 
> use locales for presentation.
> In this case you might consider the DB to be another user of sorts that needs 
> its locale to be Gregorian UTC, so your work all happens in the intermediary 
> form and humans and the DB get the locale they like to use.
> If you have the calendar and time zone, the dates are easier to covert to the 
> non-locale form and that is easy to convert to any locale. (and vice versa).
> Or did I misunderstand something?

I don’t think so.
I was running into problems using the local locale (which utilises british 
summer time) when computing the number of days between dates (I use the 
NSCalendar category method shown below).

I suppose the question is equivalent to asking if it is possible to configure 
an individual app to return a predefined NSCalendar instance for [NSCalendar 
currentCalendar] (I severely doubt this is possible).
This would prevent me from introducing bugs by forgetting to configure my 
NSDatePicker s correctly etc.

Thanks

Jonathan

- (NSInteger)daysWithinEraFromDate:(NSDate *) startDate toDate:(NSDate *) 
endDate
{
NSInteger startDay=[self ordinalityOfUnit:NSDayCalendarUnit
   inUnit: NSEraCalendarUnit 
forDate:startDate];
NSInteger endDay=[self ordinalityOfUnit:NSDayCalendarUnit
 inUnit: NSEraCalendarUnit forDate:endDate];

// note call ABS() for absolute difference
return endDay-startDay;
}




___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Re: Locale query

2014-11-13 Thread Lee Ann Rucker
You could subclass NSDatePicker and have the subclass always set the 
configuration the way you need it. It's just an NSControl, its only designated 
initializer is initWithFrame:

On Nov 13, 2014, at 7:51 AM, Jonathan Mitchell  wrote:

> 
>> On 13 Nov 2014, at 15:23, John Joyce  wrote:
>> 
>> 
>>> On Nov 13, 2014, at 9:54 PM, Jonathan Mitchell  
>>> wrote:
>>> 
>>> I have an app that must process sqlite hosted data that contains Gregorian 
>>> UTC dates.
>>> I want to ignore the local locale entirely and use Gregorian UTC through 
>>> out.
>>> 
>>> At present I am carefully configuring all my NSDatePickers controls and all 
>>> NSDateComponents calculations to use a specified Gregorian UTC timezoned 
>>> calendar.
>>> 
>>> Is this the best I can do, or am I missing a trick somewhere?
>>> 
>>> .NET has the concept of a thread culture that defines this sort of thing 
>>> for a given thread..
>>> 
>>> Thanks
>>> 
>>> Jonathan
>>> 
>> If you want to present things to users well, it is generally easier for 
>> people to think in their own locale.
>> Better to calculate than they have to think about the difference.
>> If the user story is one where they would actively think in Gregorian UTC, 
>> then it could be reasonable to do what you’re doing.
> I think this is the case here.
> The app performs financial calculations that are valid in one timezone.
> If the user locates to a different timezone the apps calculations must still 
> reference the initial timezone.
> Failure to do this causes miscalculation.
> 
>> There are lots of conveniences added in the 10.9 SDK for calendrical 
>> calculation, and in general, it is easier for all to work in 
>> NSDate/NSTimeInterval (time since reference date) for calculation and then 
>> use locales for presentation.
>> In this case you might consider the DB to be another user of sorts that 
>> needs its locale to be Gregorian UTC, so your work all happens in the 
>> intermediary form and humans and the DB get the locale they like to use.
>> If you have the calendar and time zone, the dates are easier to covert to 
>> the non-locale form and that is easy to convert to any locale. (and vice 
>> versa).
>> Or did I misunderstand something?
> 
> I don’t think so.
> I was running into problems using the local locale (which utilises british 
> summer time) when computing the number of days between dates (I use the 
> NSCalendar category method shown below).
> 
> I suppose the question is equivalent to asking if it is possible to configure 
> an individual app to return a predefined NSCalendar instance for [NSCalendar 
> currentCalendar] (I severely doubt this is possible).
> This would prevent me from introducing bugs by forgetting to configure my 
> NSDatePicker s correctly etc.
> 
> Thanks
> 
> Jonathan
> 
> - (NSInteger)daysWithinEraFromDate:(NSDate *) startDate toDate:(NSDate *) 
> endDate
> {
>NSInteger startDay=[self ordinalityOfUnit:NSDayCalendarUnit
>   inUnit: NSEraCalendarUnit 
> forDate:startDate];
>NSInteger endDay=[self ordinalityOfUnit:NSDayCalendarUnit
> inUnit: NSEraCalendarUnit 
> forDate:endDate];
> 
>// note call ABS() for absolute difference
>return endDay-startDay;
> }
> 
> 
> 
> 
> ___
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> 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://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_cocoa-2Ddev_lrucker-2540vmware.com&d=AAIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=ie7S-J__EKnfyVOBV7-jV2rZ--p47O6vkyTklpDM3h4&m=rb-7yHj8naVe-RF7sBz8ywmbZLNz2KFHjGqsCPkVZQU&s=yz3RBo-JSwPvNr96i0Ev9XdyxDShL8sLsbJ2NJh1VEo&e=
>  
> 
> This email sent to lruc...@vmware.com


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com