Как получить текущую дату и время вашего часового пояса в Java?

У меня есть приложение, размещенное на лондонском сервере. Я в Мадриде, Испания. Таким образом, часовой пояс составляет -2 часа.

Как я могу получить текущую дату / время в своем часовом поясе.

Date curr_date = new Date(System.currentTimeMillis()); 

например

 Date curr_date = new Date(System.currentTimeMillis("MAD_TIMEZONE")); 

С Joda-Time

 DateTimeZone zone = DateTimeZone.forID("Europe/Madrid"); DateTime dt = new DateTime(zone); int day = dt.getDayOfMonth(); int year = dt.getYear(); int month = dt.getMonthOfYear(); int hours = dt.getHourOfDay(); int minutes = dt.getMinuteOfHour(); 

Date всегда UTC-based … или нейтральная зона времени, в зависимости от того, как вы хотите ее просматривать. Date представляет только момент времени; он не зависит от часового пояса, всего несколько миллисекунд с эпохи Unix. Нет понятия «локальный экземпляр Date ». Используйте Date в сочетании с Calendar и / или TimeZone.getDefault() чтобы использовать «местный» часовой пояс. Используйте TimeZone.getTimeZone("Europe/Madrid") чтобы получить часовой пояс в Мадриде.

… или использовать Joda Time , которое, как правило, делает все понятным, IMO. В Joda Time вы должны использовать значение DateTime , которое является моментом времени в конкретной системе календаря и часовом поясе .

В Java 8 вы используете java.time.ZonedDateTime , который является эквивалентом Java 8 DateTime Joda Time.

Как уже сказал Jon Skeet, java.util.Date не имеет часового пояса. Объект Date представляет собой несколько миллисекунд с 1 января 1970 года, 12:00, UTC. Он не содержит информацию о часовом поясе.

Когда вы форматируете объект Date в строку, например, используя SimpleDateFormat , вы можете установить часовой пояс на объекте DateFormat чтобы сообщить ему, в каком часовом поясе вы хотите отображать дату и время:

 Date date = new Date(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Use Madrid's time zone to format the date in df.setTimeZone(TimeZone.getTimeZone("Europe/Madrid")); System.out.println("Date and time in Madrid: " + df.format(date)); 

Если вы хотите, чтобы локальная часовая зона компьютера работала в вашей программе, используйте:

 df.setTimeZone(TimeZone.getDefault()); 

использование Календаря прост:

 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Europe/Madrid")); Date currentDate = calendar.getTime(); 

Проверьте, что это может быть полезно. Работа для меня прекрасна. Код также охватывает летнее время

  TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); Calendar cal = Calendar.getInstance(); // If needed in hours rather than milliseconds int LocalOffSethrs = (int) ((cal.getTimeZone().getRawOffset()) *(2.77777778 /10000000)); int ChinaOffSethrs = (int) ((tz.getRawOffset()) *(2.77777778 /10000000)); int dts = cal.getTimeZone().getDSTSavings(); System.out.println("Local Time Zone : " + cal.getTimeZone().getDisplayName()); System.out.println("Local Day Light Time Saving : " + dts); System.out.println("China Time : " + tz.getRawOffset()); System.out.println("Local Offset Time from GMT: " + LocalOffSethrs); System.out.println("China Offset Time from GMT: " + ChinaOffSethrs); // Adjust to GMT cal.add(Calendar.MILLISECOND,-(cal.getTimeZone().getRawOffset())); // Adjust to Daylight Savings cal.add(Calendar.MILLISECOND, - cal.getTimeZone().getDSTSavings()); // Adjust to Offset cal.add(Calendar.MILLISECOND, tz.getRawOffset()); Date dt = new Date(cal.getTimeInMillis()); System.out.println("After adjusting offset Acctual China Time :" + dt); 

С помощью classов java.time, встроенных в Java 8 и более поздних версиях:

 public static void main(String[] args) { LocalDateTime localNow = LocalDateTime.now(TimeZone.getTimeZone("Europe/Madrid").toZoneId()); System.out.println(localNow); // Prints current time of given zone without zone information : 2016-04-28T15:41:17.611 ZonedDateTime zoneNow = ZonedDateTime.now(TimeZone.getTimeZone("Europe/Madrid").toZoneId()); System.out.println(zoneNow); // Prints current time of given zone with zone information : 2016-04-28T15:41:17.627+02:00[Europe/Madrid] } 

Для этого вы бы использовали JodaTime . Java.util.Date очень ограничен в отношении TimeZone.

Я не мог заставить его работать с помощью Calendar. Вы должны использовать DateFormat

 //Wednesday, July 20, 2011 3:54:44 PM PDT DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); df.setTimeZone(TimeZone.getTimeZone("PST")); final String dateTimeString = df.format(new Date()); //Wednesday, July 20, 2011 df = DateFormat.getDateInstance(DateFormat.FULL); df.setTimeZone(TimeZone.getTimeZone("PST")); final String dateString = df.format(new Date()); //3:54:44 PM PDT df = DateFormat.getTimeInstance(DateFormat.FULL); df.setTimeZone(Timezone.getTimeZone("PST")); final String timeString = df.format(new Date()); 

Вот пример:

 Calendar c = Calendar.getInstance(TimeZone.getDefault()); Date date = c.getTime(); 

Вот несколько шагов для поиска времени для вашей зоны:

Date now = new Date ();

  DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("Europe/London")); System.out.println("timeZone.......-->>>>>>"+df.format(now)); 
 DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); df.setTimeZone(TimeZone.getTimeZone("PST")); final String dateTimeString = df.format(new Date()); 
  • Временные зоны MySQL
  • Как изменить часовой пояс mysql в java-соединении
  • Установите системный часовой пояс из .NET.
  • Веб-сервис - текущий часовой пояс для города?
  • Всегда ли полезно хранить время в UTC или это тот случай, когда лучше хранить в местное время?
  • ORA-01882: область часового пояса не найдена
  • Получение даты с на несколько часов
  • Как получить текущий часовой пояс MySQL?
  • Как использовать TimeZoneInfo для получения местного времени во время летнего времени?
  • Преобразование временной зоны
  • Управление календарем, датой и временем java для приложения с несколькими часовыми поясами
  • Interesting Posts

    Entity Framework 4 Удалить объект из коллекции объектов

    Установить sys.path для Python IDLE

    Сбой приложения для Android (fragment и xml onclick)

    Некоторое уточнение, необходимое для синхронных и асинхронных операций asio

    Выполнение cv :: warpPerspective для подделки на наборе cv :: Point

    Создание внутреннего classа

    Функциональное программирование заменяет шаблоны дизайна GoF?

    Почему общие два IP-адреса для двух серверов имен на одном сервере

    Значение кругового круга по часовой стрелке / против часовой стрелки в Google Chrome

    Как определить процесс, которому принадлежит ложное диалоговое окно?

    Могу ли я настроить веб-сайт на Wi-Fi-маршрутизаторе?

    Сумма-подмножество с фиксированным размером подмножества

    Каков «лучший» способ делать распределенные транзакции в нескольких базах данных с использованием Spring и Hibernate

    Инициализация нормального массива с одним значением по умолчанию

    MediaStore – Uri для запроса всех типов файлов (носителей и носителей)

    Давайте будем гением компьютера.