0

私はタイムゾーンのサポートを提供したい..そのため、データベースに日付の値を UTC 時間で保存し、次にユーザーのローカルタイムゾーンに応じて時間を変換しています..そのため、データベースクエリでこの行を使用しています

CONVERT_TZ(modifiedtime,'+00:00','+05:30')これにより、インド標準時のローカルタイムゾーンが得られます...しかし、私の質問は、特定のユーザーの秒単位のオフセットとそのIDのみです..

とにかく、私はオフセットをフォーマットに変換できるので、+05:30 or say +04.00 ,+04.30.. 誰かが私に適切な解決策を+hh:mm与えることができます.

私のカスタムポートレットを作成したという点でliferay 6.1ポータルを使用しています..だから私はそれをJava言語でこのコードにする必要があります...だから誰か私を案内してもらえますか?

4

2 に答える 2

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の略です

于 2013-02-26T10:38:06.373 に答える
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);
于 2013-02-26T06:23:12.340 に答える