Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

having trouble with time zones and daylight savings

Posted on 2011-03-19
18
339 Views
Last Modified: 2013-11-23
So i have this time in my DB
1300550400000
from what i read the display should no if to display daylight or not

when i run this code::
SmsEvents.getStart() returns 1300550400000


        TimeZone pTz = TimeZone.getTimeZone( "PST" );
        DateFormat pdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
        pdf.setTimeZone( pTz );
        Calendar dayp = Calendar.getInstance();
        dayp.setTimeZone( pTz );
        dayp.setTime( new Date((long)SmsEvents.getStart())  );
        System.out.println( pdf.format( dayp.getTime() ) );

        TimeZone mTz = TimeZone.getTimeZone( "MST" );
        DateFormat mdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
        mdf.setTimeZone( mTz );
        Calendar daym = Calendar.getInstance();
        daym.setTimeZone( mTz );
        daym.setTime( new Date((long)SmsEvents.getStart())  );
        System.out.println( mdf.format( daym.getTime() ) );

        TimeZone cTz = TimeZone.getTimeZone( "CST" );
        DateFormat cdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
        cdf.setTimeZone( cTz );
        Calendar dayc = Calendar.getInstance();
        dayc.setTimeZone( cTz );
        dayc.setTime( new Date((long)SmsEvents.getStart())  );
        System.out.println( cdf.format( dayc.getTime() ) );


i get the following results::
March 19, 2011 9:30:00 AM PDT
March 19, 2011 9:30:00 AM MST
March 19, 2011 11:30:00 AM CDT

why is mountain doing this. Am i doing something wrong?
I am confused







0
Comment
Question by:paries
  • 10
  • 6
  • 2
18 Comments
 
LVL 47

Expert Comment

by:for_yan
ID: 35172370
What is it that you don't like?
seems logical to me, I guess MST will give the same number as PDT
CDT is two hours difference with PDT
and I guess MDT will be one hour difference with PDT.
Isn't that what you'll expect?
0
 

Author Comment

by:paries
ID: 35172396
so my question is why is it
March 19, 2011 9:30:00 AM MST

should it have not been MDT??

0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172399


I got different output:


March 19, 2011 8:00:00 AM PST
March 19, 2011 9:00:00 AM MST
March 19, 2011 10:00:00 AM CST

Open in new window


I just modified your code a little bit (replacing SMSEvent):

     TimeZone pTz = TimeZone.getTimeZone( "PST" );
            DateFormat pdf = DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG );
            pdf.setTimeZone( pTz );
            Calendar dayp = Calendar.getInstance();
            dayp.setTimeZone( pTz );
            dayp.setTime( new Date((long)1300550400000L));
            System.out.println( pdf.format( dayp.getTime() ) );

            TimeZone mTz = TimeZone.getTimeZone( "MST" );
            DateFormat mdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
            mdf.setTimeZone( mTz );
            Calendar daym = Calendar.getInstance();
            daym.setTimeZone( mTz );
            daym.setTime( new Date((long)1300550400000L)  );
            System.out.println( mdf.format( daym.getTime() ) );

            TimeZone cTz = TimeZone.getTimeZone( "CST" );
            DateFormat cdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
            cdf.setTimeZone( cTz );
            Calendar dayc = Calendar.getInstance();
            dayc.setTimeZone( cTz );
            dayc.setTime( new Date((long)1300550400000L)  );
            System.out.println( cdf.format( dayc.getTime() ) );

Open in new window


0
Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

 
LVL 47

Expert Comment

by:for_yan
ID: 35172417
When I changed all thre of them to
PDT, MDT nd CDT I got everything in GMT, like that:


March 19, 2011 4:00:00 PM GMT
March 19, 2011 4:00:00 PM GMT
March 19, 2011 4:00:00 PM GMT

Open in new window


Interesting, indeed
0
 

Author Comment

by:paries
ID: 35172434
i am running 1.5 i bet you you are running 1.6
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172442
I was just posting that I  have Java 1.5 (1.5.0_01)
(even more surprising).
Did you change to that same long number (just to have the codes identical).
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172449
I'm in Pacific zone, so my local time is 11:06 I guess it is PDT
0
 

Author Comment

by:paries
ID: 35172473
so i am using jdk1.5.0_15
wow this is so confusing....

I am at a loss
thats for you help.
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172478
It looks like my java does not understand PDT, CDT, MDT;
when I put "ABC" instaed - I also get GMT time in the result
0
 

Author Comment

by:paries
ID: 35172490
yeah that is the same with me.
but if i put in CST it realized i am in daylight savings and shows CDT
0
 

Author Comment

by:paries
ID: 35172509
wow, so i took this very simple jsp and moved to a 1.6.0_20 box

go the same results
March 19, 2011 11:25:22 AM PDT
March 19, 2011 11:25:22 AM MST
March 19, 2011 1:25:22 PM CDT



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.DecimalFormat" %>
<%@ page import="java.text.DateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
        Date now2 = new Date();

        TimeZone pTz = TimeZone.getTimeZone( "PST" );
        DateFormat pdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
        pdf.setTimeZone( pTz );
        Calendar dayp = Calendar.getInstance();
        dayp.setTimeZone( pTz );
        dayp.setTime( now2  ) ;
        System.out.println( pdf.format( dayp.getTime() ) );

        TimeZone mTz = TimeZone.getTimeZone( "MST" );
        DateFormat mdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
        mdf.setTimeZone( mTz );
        Calendar daym = Calendar.getInstance();
        daym.setTimeZone( mTz );
        daym.setTime( now2 );
        System.out.println( mdf.format( daym.getTime() ) );

        TimeZone cTz = TimeZone.getTimeZone( "CST" );
        DateFormat cdf = DateFormat.getDateTimeInstance( DateFormat.LONG,DateFormat.LONG );
        cdf.setTimeZone( cTz );
        Calendar dayc = Calendar.getInstance();
        dayc.setTimeZone( cTz );
        dayc.setTime( now2 );
        System.out.println( cdf.format( dayc.getTime() ) );

%>
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172511
I'll be in the office this afternoon; I have sveral java's there including 1.6 - I'll give it a try
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172516
All that looks really strange
0
 

Author Comment

by:paries
ID: 35172533
after some googling seems to be a common problem
if i do TimeZone mTz = TimeZone.getTimeZone( "America/Denver" );
it displays correctly
I think i am going to go that route
thanks for all your help

0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172591
And thanks for this interesting news also
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 500 total points
ID: 35172614
Yes, 3 letter tzs are deprecated - use the longer city form
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35172753
If all stuff which is deprecated in Java would stop working today - we'll have a disaster much worse than any Japanese tsunami.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 35172776
Well tzs are a little different than stuff like deprecated methods:

a. they are a moving target for Java
b. they're already either buggy or borderline buggy

For those reasons, it's worth running the tzupdater tool - it won't do you any harm and might do some good
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
oracle 11g 23 107
How to convert String matching to regex in java 4 50
Why doesn't this text field show up on my Applet frame? 2 19
hashmap order 17 37
INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question