Java 如何转换系统&x27;s时区到用户';s时区
我有一个来自我的应用程序的时间戳值。用户可以在任何给定的本地时区 此日期用于Web服务,并且无论用户所在的时区是什么,系统总是选择服务器时区(位于美国),我需要将参数从系统的转换为用户的。 我尝试过这种方法:Java 如何转换系统&x27;s时区到用户';s时区,java,timezone,Java,Timezone,我有一个来自我的应用程序的时间戳值。用户可以在任何给定的本地时区 此日期用于Web服务,并且无论用户所在的时区是什么,系统总是选择服务器时区(位于美国),我需要将参数从系统的转换为用户的。 我尝试过这种方法: /** * Adapt calendar to client time zone. * @param calendar - adapting calendar * @param timeZone - client time zone * @return ada
/**
* 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)”存在语法问题
我正在使用JDK1.3。我不知道我错过了什么
有谁能提高我对这个概念的理解吗?事实上,简单地获得一个日历对象,它具有相同的原始时间值,但位于不同的时区,甚至比这更简单
Calendar ret = Calendar.getInstance(timeZone);
ret.setTime(calendar.getTime());
return ret;
但我不确定这是否足以满足你的需要。无论何时输入或输出该日历(或其日期),标准JavaAPI都会自动将该值转换回本地时间。JDBC语句(尽管这也可能取决于您特定的JDBC驱动程序)、toString()等。例如,您可能需要实际使用带有时区的DateFormat,而不是设置日历的时区
如果您的Web服务引擎正在自动将传入的“日期”类型字段转换为日历,您可能会在那里有一些选项,特别是如果字段的类型是真正的日期格式而不是普通字符串
如果不知道如何使用此时区转换日历,很难说得更多。添加完整的编译器错误解释。