我有一个来自我的应用程序的Timestamp值。用户可以在任何给定的本地TimeZone中。
此日期用于WebService和系统,无论时区用户总是选择服务器时区(位于美国),我需要将参数从系统转换为用户。 我试过这种方法:
/**
* Adapt calendar to client time zone.
* @param calendar - adapting calendar
* @param timeZone - client time zone
* @return adapt calendar to client time zone
*/
public static Calendar convertCalendar(final Calendar calendar,
final TimeZone timeZone){
Calendar ret = new GregorianCalendar(timeZone);
ret.setTimeInMillis(calendar.getTimeInMillis() +
timeZone.getOffset(calendar.getTimeInMillis()) -
TimeZone.getDefault().getOffset(calendar.getTimeInMillis()));
ret.getTime();
return ret;
}
我的计算机上显示语法错误,表示声明“public static Calendar convertCalendar(Calendar calendar,TimeZone timeone)”有语法问题。
我正在使用JDK 1.3。我不确定我错过了什么。
有谁可以提高我对这个概念的理解?
答案 0 :(得分:1)
事实上,要简单地获取一个具有相同原始时间值但位于不同TimeZone中的Calendar对象,它甚至比这更简单。
Calendar ret = Calendar.getInstance(timeZone);
ret.setTime(calendar.getTime());
return ret;
但我不确定这对你所需要的是否足够。无论何时输入或输出该Calendar(或其日期),标准Java API都会自动将值转换回本地时间。 JDBC语句(尽管这也可能取决于您的特定JDBC驱动程序),toString()等。例如,您可能需要将DateFormat与TimeZone实际配合使用,而不是设置Calendar的TimeZone。
如果您的Web服务引擎自动将传入的“日期”类型字段转换为日历,那么您可能会有一些选项,特别是如果字段的类型是真实的日期格式而不是纯字符串。
如果不知道如何使用这个TimeZone转换的日历,很难说更多。