java 国际化时间问题

一个系统,客户有美国的和中国的,由于2个地方时区不同,要求中国用户提交时的日期,在美国用户访问时显示为美国时间,这个该怎么实现?另外数据库里面存的这个日期该怎么存呢?页面上显示的时候怎么转换时区?

我觉得数据库肯定是存某个时区的时间,然后页面上根据客户端的时区进行转换,不知道对不对
[b]问题补充:[/b]
如何转换成UTC时间?utc时间如何转为某个时区的时间?
我db的字段类型是timestamp
[b]问题补充:[/b]
问题已经解决。
结论如下:
1.date类型的存储的是一个距离1970年以来的毫秒数,这个值与时区无关。
换句话说, new Date()获得的日期在任何时区下都一样

2.至于不同时区的显示问题,其实只是显示方式不一样而已。
只需要将SimpleDateFormat的timezone设置一下而已,调用format方法得到的是该日期在某种时区下的显示方式

//当前系统默认时区的时间:
Calendar calendar=new GregorianCalendar();
System.out.print("时区:"+calendar.getTimeZone().getID()+" ");
System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE));
//美国洛杉矶时区
TimeZone tz=TimeZone.getTimeZone("America/Los_Angeles");
//时区转换
calendar.setTimeZone(tz);
System.out.print("时区:"+calendar.getTimeZone().getID()+" ");
System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE));

存入db时将本地时间转化成utc时间,取出时将utc时间转为当前locale或timezone的时间。譬如
[code="java"]/**
* Gets a calendar using the specified time zone and default locale.
* The Calendar returned is based on the current time
* in the given time zone with the default locale.
*
* @param zone the time zone to use
* @return a Calendar.
*/
public static Calendar getInstance(TimeZone zone)
{
return createCalendar(zone, Locale.getDefault());
}[/code]

[code="java"]//当前系统默认时区的时间:
Calendar calendar=new GregorianCalendar();
System.out.print("时区:"+calendar.getTimeZone().getID()+" ");
System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE));
//美国洛杉矶时区
TimeZone tz=TimeZone.getTimeZone("America/Los_Angeles");
//时区转换
calendar.setTimeZone(tz);
System.out.print("时区:"+calendar.getTimeZone().getID()+" ");
System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE));[/code]