• 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: NSTimestamp
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTimestamp


  • Subject: Re: NSTimestamp
  • From: "Jerry W. Walker" <email@hidden>
  • Date: Thu, 26 Jan 2006 08:00:01 -0500

Hi, Andrew,

Given the current state of the Date/Time/Calendar classes between WO and Java, yours seems to be one of the more cogent and straight forward approaches that I've seen. It even seems to work (if one either uses the add() methods on the Calendar class or remembers the idiosyncrasies of the set() methods).

I would also like to see anyone else's approach if they've thought the problem through and if it differs significantly from yours.

I still believe that the combination of Time/Date/Calendar classes between WO and JSEE are broken and dangerous. Particularly so since the errors that occur are often seldom tested boundary conditions, e.g. adding a month to 1/30/2005 then adding another month and watching what happens to the DAY_OF_MONTH, adding a day to 4/2/2005 or 10/1/2005 in the US and watching the time shift (I'm not sure what the NZ daylight savings time laws are, but those are the DST boundaries in the US this year). And what's with Java's Calendar offsetting the month by ZERO??? Who in their right mind would do that? Of if they would do that, why aren't the other numbers (e.g. DAY_OF_WEEK, DAY_OF_MONTH) offset similarly.

Admittedly, when addressed globally, time and calendar concepts are not simple, but I feel the present classes add as many complexities and gotcha's as they remove.

Regards,
Jerry

On Jan 25, 2006, at 7:10 PM, email@hidden wrote:

Hello Jerry;

My point here is not that NSTimestamp is wrong, but that it's directed at one set of interests and there seem to be no classes directed to the other...

I had the same problems some years ago getting a date/time infrastructure setup. Here's a rundown on how things worked out for me. Note that this isn't qualified as being a "right way" to do things as I have largely developed this strategy in isolation, but it seems to work out well. I'd welcome feedback on this.


I do the following in my app constructor...

	TimeZone tz = java.util.TimeZone.getTimeZone("GMT+0000");
	TimeZone.setDefault(tz);
	NSTimeZone.setDefault(tz);

This means that all timestamps within the application are relative to GMT. Then I store a "java.util.TimeZone" instance in the session object allowing each "user" to have a different timezone.

I created my own date parsers/formatters which (like NeXT's ones which I discovered some time later) have a presentation timezone and a data timezone. My formatters are straight J2SE inside, but subclasses translate using millisecond times between "java.util.Date" and "NSTimesamp" on the fly. Formatting takes the timestamps from data to presentation timezone and parsing takes the timestamp from presentation to data timezone. The session has methods to provide these formatters which upon first invocation set the data timezone to GMT and the presentation timezone to the session timezone on the formatter. There are formatters for dates and formatters for dates-and-times accessible from my session instances. On elements such as "WOTextField", I do not use the "numberformat" or "dateformat" bindings, but just bind "formatter" to my own formatters supplied by the session object. In this way, every date or time the user sees is in their timezone, but inside the WOA it is GMT all the way through.

When I need to manipulate timestamps using date arithmetic, I use a GregorianCalendar which you can setup to operate in a particular timezone. When you set the time on this GregorianCalendar instance, use the method "setTimeInMillis(...)" instead of "setTime (...)" and you can use the method "getTime()" on the NSTimestamp instance to get the millisecond time. Don't forget to fiddle the millisecond time into the right timezone first!

Basically if you need to move time between the WebObjects world and J2SE world, make sure that you construct dates and so on with long millisecond values.

I wanted some special behaviours from my formatters so I'm not sure how all this would be using the native "NSTimestampFormatter".

cheers.
___
Andrew Lindesay
www.lindesay.co.nz

--
__ Jerry W. Walker,
WebObjects Developer/Instructor for High Performance Industrial Strength Internet Enabled Systems


    email@hidden
    203 278-4085        office



_______________________________________________
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: NSTimestamp (From: email@hidden)

  • Prev by Date: WebObjects OpenBase plugin question...
  • Next by Date: Fwd: WebObjects and Ajax: Is it time?
  • Previous by thread: Re: NSTimestamp
  • Next by thread: WOFileUpload
  • Index(es):
    • Date
    • Thread