我想支持timezone ..因为我将数据的值存储在数据库中,并且我正在转换时间取决于用户本地时区..因为我正在使用此行我的数据库查询
CONVERT_TZ(modifiedtime,'+00:00','+05:30')
这将为我提供印度标准时间的当地时区...但我的问题是我只能在特定用户的时间和偏差中进行偏移..
无论如何,我可以将偏移转换为+05:30 or say +04.00 ,+04.30..
之类的格式
任何人都可以给我正确的解决方案,如果我可以将这个以秒为单位给出的偏移转换为+hh:mm
格式,这样我就可以直接给它查询......
我使用了liferay 6.1门户网站,因为我创建了我的自定义portlet ..所以我需要用java语言编写这个代码...所以请任何人指导我吗?
答案 0 :(得分:3)
以下可能会更短,更方便
private static SimpleDateFormat plus = new SimpleDateFormat("+hh:mm");
private static SimpleDateFormat minus = new SimpleDateFormat("-hh:mm");
private static String getTimeCode(int seconds) {
SimpleDateFormat simpleDateFormat = (seconds < 0) ? minus : plus;
if (seconds < 0) seconds = 12 * 3600 - seconds;
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return simpleDateFormat.format(new Date(seconds * 1000));
}
int seconds = 5 * 3600 + 30 * 60;
String format = getTime(seconds); //+05:30
format = getTime(-1 * seconds); //-05:30
以上代码可能不适用所有编码标准,但不适用于SO
答案 1 :(得分:1)
您可以尝试编写自己的转化代码或尝试此操作:
long offset = 19800; //offset IST (seconds)
long time = TimeUnit.SECONDS.toMinutes(offset); //or offset/60
long hour = time / 60;
long min = Math.abs(time % 60);
String hrStr = "";
if (hour > 0 && hour < 10) {
hrStr = "+0" + String.valueOf(hour);
} else if (hour >= 10) {
hrStr = "+" + String.valueOf(hour);
} else if (hour < 0 && hour > -10) {
hrStr = "-0" + String.valueOf(hour).substring(1);
} else {
hrStr = String.valueOf(hour);
}
String minStr = String.valueOf(min);
if (min < 10) {
minStr = "0" + (time % 60);
}
String timeStr = hrStr + ":" + minStr;
System.out.println(timeStr);