Я предполагаю, что отметка времени указана в UTC, а смещение - это смещение UTC желаемого местного времени.Если временная метка находится в заданном смещении от UTC, вам придется сгенерировать ее немного по-другому.
Надежный способ создать ее в Java - использовать библиотеку Joda-Time ,что намного лучше, чем классы по умолчанию java.util.Date
и java.util.Calendar
.
// A formatter that prints the timezone offset
DateTimeFormatter fmt = DateTimeFormat.forPattern("Z");
// The current date+time in the system default timezone.
DateTime dt = new DateTime();
// Create the result.
String result = "/Date(" + dt.getMillis() + fmt.print(dt) + ")/";
Немного прискорбно, что DateTimeFormat
не имеет способа вывести миллисекунды, посколькуэпоха;это то, что требует объединения строк dt.getMillis()
.
Чтобы сгенерировать то же самое с использованием классов java.util
, это выглядело бы примерно так:
// A formatter that prints the timezone offset
SimpleDateFormat df = new SimpleDateFormat("Z");
// Current date+time in system default timezone.
Calendar now = Calendar.getInstance();
// Don't forget this if you use a timezone other than system default:
df.setTimeZone( now.getTimeZone() );
// Create the result
String result = "/Date(" now.getTimeInMillis() + df.format(now.getTime()) +")/";
По сути, это то же самое, что и Joda-Пример времени, но бит, где вам нужно скопировать часовой пояс из календаря в форматировщик даты, является основным источником ошибок.