• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: storing NSTimestamp values as GMT, displaying as (client) local?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: storing NSTimestamp values as GMT, displaying as (client) local?


  • Subject: Re: storing NSTimestamp values as GMT, displaying as (client) local?
  • From: Chuck Hill <email@hidden>
  • Date: Tue, 12 May 2009 15:43:25 -0700


On May 12, 2009, at 2:26 PM, Leif Harrison wrote:

Okay, so I'm finally getting around to implementing this in the app I'm working on, but am having an issue now when I try to switch from using dateformat in my component to using formatter.

Basically, everything displays okay, but when I try to make changes and save them I get this error:

IllegalArgumentException: While trying to invoke the set method "public void com .mobilewarrior .model ._ActivitySchedule .setStartDate(com.webobjects.foundation.NSTimestamp)" on an object of type com.mobilewarrior.model.ActivitySchedule we received an argument of type java.util.Date. This often happens if you forget to use a formatter.

My component looks like the following:
<wo:textfield class="date-time" value="[activitySchedule.startDate]" formatter="[scheduleDateFormatter]" />


And my schedule date formatter looks like this:
public SimpleDateFormat scheduleDateFormatter() {
SimpleDateFormat dateFormatter = new SimpleDateFormat("MMMM d, yyyy hh:mm a");
TimeZone tz = ((Session)session()).timeZone();
dateFormatter.setTimeZone(tz);


log.debug(" format = " + dateFormatter.toPattern());
log.debug(" timezone = " + dateFormatter.getTimeZone().getDisplayName());
return dateFormatter;
}


So...if my model object is storing it's value as NSTimestamp, but SimpleDateFormat.parse() return a Date object...this isn't going to work very well.

How do you guys do it? Use the deprecated NSTimestampFormatter instead? Build cover methods to convert from Date to NSTimestamp? Something else?

Subclass it and make it return an NSTimestamp.

Chuck



On Apr 15, 2009, at 4:51 AM, Travis Britt wrote:


On Apr 14, 2009, at 9:04 PM, Andrew Lindesay wrote:
I'm not sure what that value is used for in the EOModel -- anybody know?

I think Mike and I looked into this several months ago and turns out it isn't actually used, tho it is documented in EOAttribute as being implemented in EOAdaptorChannel. IIRC it exists in EntityModeler b/c it was in EOModeler.


On Apr 14, 2009, at 8:46 PM, Leif Harrison wrote:
3. How can I get the local timezone (of the browser client) so that I can use it for my WOTextfield formatters (to display local time)?

The time zone in your app and database server should be the same. I recommend setting it explicitly in the app. (Don't rely on using the runtime's default since this changes based on the server's time zone.) Just use GMT! But I believe this should all work so long as everything is operating with the same time zone. (For example, if you have legacy data stored with a time zone region like America/ New York it's not easy to convert it accurately to GMT due to changes in DST.) You do not want dates stored in the DB with different time zones.


Wen a user logs in to the app you can snag their browser's gmt offset by using javascript to write out a hidden form field something like this:

<script>
document.write('<input type="hidden" name="gmtOffsetMinutes" value="' + new Date().getTimezoneOffset() + '" />');
</script>


Then your login method can grab that as an integer, create a TimeZone object from it and stash it somewhere handy (like Session.)

I create a TimeZone object from the gmt offset using TimeZone.getTimeZone(String) with a string created by prepending "GMT-" or "GMT+" to the offset value in hours. (Note that the Javascript will give it to you in minutes.)

Then you can use the TimeZone obj in your formatter to display the date in the user's time zone. Works great.

tb

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden

_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden

-- Chuck Hill Senior Consultant / VP Development

Come to WOWODC'09 in San Fran this June!
http://www.wocommunity.org/wowodc09/

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Re: storing NSTimestamp values as GMT, displaying as (client) local? (From: Leif Harrison <email@hidden>)

  • Prev by Date: Re: Any guesses ?
  • Next by Date: Re: D2W: article at stepwise.com, references in wiki
  • Previous by thread: Re: storing NSTimestamp values as GMT, displaying as (client) local?
  • Next by thread: Any guesses ?
  • Index(es):
    • Date
    • Thread