java - Conversion between Time Zone gives incorrect results -


 datetime dt = new localdatetime(rs.gettimestamp("lastupdated").gettime()).todatetime(datetimezone.forid("america/new_york"));   timestamp t=new timestamp(dt.getmillis());      

the result doesn't match actual time of "america/new_york". off several hours. possibly problem?

update-

this time want convert db: 2015-04-28 13:14:31 converted time(output of code after removing "dt.plusmillis(offset)" code: 2015-04-28 22:44:31.0 actual ny time :3:45

it easy make joda library. core java libraries painfull , not suggested use. however, date , time libraries has been reimplemented java 8.

lets make example, assume try convert melbourne australia time madrid time.

here joda code;

    localdatetime datetime = new localdatetime(2015, 3, 28, 14, 0, 0);      datetime srcdatetime = datetime.todatetime(datetimezone.forid("asia/colombo"));     datetime dstdatetime = srcdatetime.withzone(datetimezone.forid("america/new_york"));     date madridtime =dstdatetime.tolocaldatetime().todatetime().todate();       system.out.println("asia/colombo -> "+srcdatetime.todatetime());     system.out.println("america/new_york -> "+madridtime); 

here output:

asia/colombo -> 2015-04-28t14:00:00.050+05:30 america/new_york -> tue apr 28 04:30:00 eest 2015 

you can check http://www.timezoneconverter.com/

enter image description here

see also:

date , time api jdk 8