Проверьте, не текущее время 00:00:00 [дубликат]

У меня такая же ошибка, и я исправил ее следующим образом:

получить объект изображения по-разному зависит от UIImagePickerController allowEditing true или false

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if isImagePickerAllowEditing {
        sourceImage = info[UIImagePickerControllerEditedImage] as? UIImage
    } else {
        sourceImage = info[UIImagePickerControllerOriginalImage] as? UIImage
    }

    ....

}

И, конечно, , попросите разрешение на доступ к библиотеке фотографий сначала, как указано выше.

918
задан MiguelHincapieC 17 September 2015 в 16:59
поделиться

30 ответов

Вы можете использовать:

import java.util.Calendar

Date currentTime = Calendar.getInstance().getTime();

В календаре есть много констант для всего, что вам нужно.

Изменить: Проверить Календарь класс документации

1075
ответ дан ColdFire 22 August 2018 в 18:37
поделиться
  • 1
    +1 Это было очень полезно. Быть новым, это все эти маленькие лакомые кусочки, которые нам нужны ... Я использую календарь, чтобы получить юлианскую дату. Гораздо проще, чем получить миллисекунды и выяснить, соответствует ли значение сегодня;) – Bill Mote 6 April 2011 в 15:50
  • 2
    Но откуда это вытащить дату и время? настройка устройства Android? – Kyle Clegg 17 May 2012 в 21:29
  • 3
    @Kyle Да, это основано на настройках времени устройства / часовом поясе. Цитата из метода doc : "Календарный метод getInstance возвращает календарь, язык которого основан на системных настройках и чьи временные поля были инициализированы текущей датой и временем & quot; ; - (над первой строкой образца кода в документации класса). – user 20 May 2012 в 13:21
  • 4
    Это просто дает мне текущую секунду, между 0 и 60. Что-то изменилось за последние пару лет? – adamdport 23 April 2015 в 19:20
  • 5
    Как говорит @adamdport, это фактически не отвечает на вопрос ... Calendar.getInstance().getTime() или Calendar.getInstance().getTimeInMillis() будет работать. – akousmata 11 May 2015 в 13:23

Попробуйте это

String mytime = (DateFormat.format("dd-MM-yyyy hh:mm:ss", new java.util.Date()).toString());
4
ответ дан Abhinaw Kumar 22 August 2018 в 18:37
поделиться

Вы должны использовать класс Calender в соответствии с новым API. Класс даты теперь устарел.

Calendar cal = Calendar.getInstance();

String date = ""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);

String time = ""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);
3
ответ дан Akshay Paliwal 22 August 2018 в 18:37
поделиться
final Calendar c = Calendar.getInstance();
    int mYear = c.get(Calendar.YEAR);
    int mMonth = c.get(Calendar.MONTH);
    int mDay = c.get(Calendar.DAY_OF_MONTH);

textView.setText(""+mDay+"-"+mMonth+"-"+mYear);
15
ответ дан Alex Muriithi 22 August 2018 в 18:37
поделиться

вы можете просто использовать следующий код:

 DateFormat df = new SimpleDateFormat("HH:mm"); //format time
 String time = df.format(Calendar.getInstance().getTime());

 DateFormat df1=new SimpleDateFormat("yyyy/MM/dd");//foramt date
 String date=df1.format(Calendar.getInstance().getTime());
7
ответ дан Ali Ziaee 22 August 2018 в 18:37
поделиться

Попробуйте таким образом. Все форматы приведены ниже, чтобы получить формат даты и времени.

    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);

48
ответ дан Amitsharma 22 August 2018 в 18:37
поделиться

tl; dr

Instant.now()  // Current moment in UTC.

... или ...

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // In a particular time zone

Подробности

Другие ответы, правда, устарели. Старые классы времени-времени оказались плохо спроектированными, запутанными и сложными.

java.time

Те старые классы были вытеснены рамкой java.time .

Эти новые классы вдохновлены очень успешным Joda-Time , определенном JSR 310 и расширенным проектом ThreeTen-Extra .

См. учебное пособие Oracle [/ 7] g7].

Instant

Instant - это момент на временной шкале в UTC с разрешением до наносекунды .

 Instant instant = Instant.now(); // Current moment in UTC.

Часовой пояс

Применить часовой пояс ( ZoneId ), чтобы получить ZonedDateTime . Если вы опустите часовой пояс, ваш часовой пояс вашего JVM неявно применяется. Лучше указать явно желаемый / ожидаемый часовой пояс.

Используйте имена правильных часовых поясов в формате continent/region, такие как America/Montreal , Europe/Brussels или Asia/Kolkata . Никогда не используйте аббревиатуры из 3-4 букв, такие как EST или IST, поскольку они не являются стандартизованными и не уникальными.

ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

Создание строк

Вы можете легко создать String в качестве текстового представления значения даты и времени. Вы можете использовать стандартный формат, свой собственный формат или автоматически локализованный формат.

ISO 8601

Вы можете вызвать методы toString, чтобы получить текст, отформатированный с использованием общего и разумный стандарт ISO 8601 .

String output = instant.toString();

2016-03-23T03: 09: 01.613Z

Обратите внимание, что для ZonedDateTime метод toString расширяет ISO 8601 добавьте имя часового пояса в квадратных скобках. Чрезвычайно полезная и важная информация, но не стандартная.

2016-03-22T20: 09: 01.613-08: 00 [America / Los_Angeles]

Пользовательский format

Или укажите свой собственный шаблон форматирования с классом DateTimeFormatter .

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );

Укажите Locale для человеческого языка (английский, французский и т. д.) для использования при переводе названия дня / месяца, а также в определении культурных норм, таких как порядок года, месяца и даты. Обратите внимание, что Locale не имеет никакого отношения к часовому поясу.

formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );

Локализация

Еще лучше, пусть java.time выполняет работу по локализации автоматически.

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) );  // Or Locale.CANADA_FRENCH and so on.

О java.time

Рамка java.time встроена в Java 8 и более поздние версии , Эти классы вытесняют неприятные старые классы времени legacy , такие как java.util.Date , Calendar и & amp; SimpleDateFormat .

Проект Joda-Time , теперь в режиме обслуживания , советует перейти на java.time .

Чтобы узнать больше, см. учебное пособие Oracle . И поиск Stack Overflow для многих примеров и объяснений. Спецификация JSR 310 .

Вы можете обменивать java.time объекты непосредственно с вашей базой данных. Используйте драйвер JDBC , соответствующий JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в классах java.sql.*.

Где получить классы java.time?

  • Java SE 8 , Java SE 9 , Java SE 10 и позже Встроенный. Часть стандартного Java API с интегрированной реализацией. Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7 Большая часть функций java.time обратно переносится на Java 6 & amp; 7 в ThreeTen-Backport .
  • Android Более поздние версии реализаций пакетов Android для классов java.time. Для более ранних Android (& lt; 26) проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше). См. Как использовать ThreeTenABP ... .

Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval , YearWeek , YearQuarter и more .

27
ответ дан Basil Bourque 22 August 2018 в 18:37
поделиться
  • 1
    @ giraffe.guru Перечитайте мой ответ. Вы пропустили третью пулю. Большая часть функциональных возможностей java.time обратно переносится на Java 6 & amp; 7 в ThreeTen-Backport и далее адаптирован для Android в ThreeTenABP . – Basil Bourque 25 June 2016 в 05:38
  • 2
    Instant.now() и ZonedDateTime.now() требуется API 26 – Ryde 12 August 2018 в 23:13
  • 3
    @Ryde Как я сказал giraffe.guru, перечитайте мой ответ. Посмотрите на третью букву с названием «Android». – Basil Bourque 13 August 2018 в 01:00

Ну, у меня были проблемы с некоторыми ответами API, поэтому я скомплектовываю этот код, надеюсь, он им обслужит:

    Time t = new Time(Time.getCurrentTimezone());
    t.setToNow();
    String date1 = t.format("%Y/%m/%d");

    Date date = new Date(System.currentTimeMillis());
    SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa",
            Locale.ENGLISH);
    String var = dateFormat.format(date);
    String horafecha = var+ " - " + date1;

    tvTime.setText(horafecha);

Выход: 03:25 PM - 2017/10/03

3
ответ дан Charlie 22 August 2018 в 18:37
поделиться

Ниже метод вернет текущую дату и время в String, используйте другой часовой пояс в соответствии с вашим текущим часовым поясом. Я использовал GMT

public static String GetToday(){
    Date presentTime_Date = Calendar.getInstance().getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(presentTime_Date);
}
4
ответ дан Danger 22 August 2018 в 18:37
поделиться

Вы можете использовать код:

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());

Выход:

2014-11-11 00:47:55

Вы также можете получить еще несколько опций форматирования для SimpleDateFormat из здесь .

34
ответ дан Himanshu Aggarwal 22 August 2018 в 18:37
поделиться
Time now = new Time();
now.setToNow();

Попробуйте это для меня тоже.

7
ответ дан Jibяaᴎ Khaᴎ 22 August 2018 в 18:37
поделиться

Это метод, который будет полезен для получения даты и времени:

private String getDate(){
    DateFormat dfDate = new SimpleDateFormat("yyyy/MM/dd");
    String date=dfDate.format(Calendar.getInstance().getTime());
    DateFormat dfTime = new SimpleDateFormat("HH:mm");
    String time = dfTime.format(Calendar.getInstance().getTime());
    return date + " " + time;
}

Вы можете вызвать этот метод и получить текущие значения даты и времени:

2017/01//09 19:23
11
ответ дан Jorgesys 22 August 2018 в 18:37
поделиться
  • 1
    Мне не нравится жесткая связь логики представления и логики процесса; Я бы предпочел метод, который просто форматирует & amp; принимает параметр ввода даты. Я также не понимаю, почему вы используете 2 SimpleDateFormat s & amp; 2 Date s ... не можете ли вы просто использовать "yyyy/MM/dd HH:mm" как формат & amp; вызвать календарь один раз? – AjahnCharles 23 November 2017 в 11:31
  • 2
    благодаря своей работе для меня – Jatin Patel 15 December 2017 в 07:24

Чтобы получить текущее время, вы можете использовать System.currentTimeMillis(), который является стандартным для Java. Затем вы можете использовать его для создания даты

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

И, как упоминалось другими, чтобы создать время

Time currentTime = new Time();
currentTime.setToNow();
46
ответ дан JosephL 22 August 2018 в 18:37
поделиться
  • 1
    Нет необходимости в System.currentTimeMillis(); просто new Date() делает то же самое . – Jonik 28 December 2013 в 00:11
  • 2
    @Jonik Cannot resolve constructor Date() в Android, Android SDK использует смесь Java 6 и 7. – surfer190 16 March 2015 в 10:59
  • 3
    Спасибо. Date currentDate = new Date(System.currentTimeMillis()); верен – mghhgm 3 March 2016 в 08:41
  • 4
    @mghhgm Нет, new Date(System.currentTimeMillis()) в порядке справа: (a) он избыточен, так как это то же самое, что и new Date(). (b) Сложный java.util.Date класс теперь вытесняется java.time.Instant по сравнению с Java 8 и более поздними. Back-ported на Java 6 & amp; 7 в проекте ThreeTen-Backport и на более раннем Android (& lt; 26) в ThreeTenABP . – Basil Bourque 23 June 2018 в 03:28

На самом деле безопаснее установить текущий часовой пояс на устройстве с помощью Time.getCurrentTimezone(), иначе вы получите текущее время в UTC.

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();

Затем вы можете получить всю дату поля, которые вы хотите, например:

textViewDay.setText(today.monthDay + "");             // Day of the month (1-31)
textViewMonth.setText(today.month + "");              // Month (0-11)
textViewYear.setText(today.year + "");                // Year 
textViewTime.setText(today.format("%k:%M:%S"));  // Current time

См. android.text.format.Time класс для всех деталей.

UPDATE

Как и многие люди, Google говорит, что этот класс имеет ряд проблем и больше не должен использоваться:

У этого класса есть ряд проблем, и это рекомендуется использовать GregorianCalendar.

Известные проблемы:

По историческим причинам при выполнении вычислений времени вся арифметика в настоящее время выполняется с использованием 32-битных целых чисел. Это ограничивает надежный временной диапазон, представляемый с 1902 года по 2037 год. См. Статью в Википедии по проблеме 2038 года. Не полагайтесь на это поведение; он может измениться в будущем. Вызов switchTimezone (String) на дату, которая не может существовать, например, время стены, которое было пропущено из-за перехода на летнее время, приведет к дате в 1969 году (то есть -1 или за 1 секунду до 1 января 1970 года по UTC). Большая часть форматирования / синтаксического анализа предполагает текст ASCII и поэтому не подходит для использования с не-ASCII-скриптами.

121
ответ дан kaneda 22 August 2018 в 18:37
поделиться
  • 1
    Из какого пакета следует импортировать время? – ManishSB 11 October 2014 в 06:20
  • 2
    android.text.format, как указано выше – kaneda 12 October 2014 в 17:30
  • 3
    Этот класс устарел на уровне API 22. Вместо этого мы можем использовать GregorianCalendar. – Choletski 14 December 2015 в 09:29

попытайтесь использовать ниже код:

 Date date = new Date();
 SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());  
 String currentDate = dateFormatWithZone.format(date);
1
ответ дан Manikandan K 22 August 2018 в 18:37
поделиться
Date todayDate = new Date();
todayDate.getDay();
todayDate.getHours();
todayDate.getMinutes();
todayDate.getMonth();
todayDate.getTime();
7
ответ дан Muhammad Aamir Ali 22 August 2018 в 18:37
поделиться

Для настраиваемого формата времени и даты:

    SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ",Locale.ENGLISH);
    String cDateTime=dateFormat.format(new Date());

Вывод выглядит как ниже: 2015-06-18T10: 15: 56-05: 00

9
ответ дан Omar Faroque Anik 22 August 2018 в 18:37
поделиться

Вы можете получить дату с помощью:

Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date = t.format("%Y/%m/%d");

Это даст вам результат в приятной форме, как в этом примере: «2014/02/09».

189
ответ дан Peter Mortensen 22 August 2018 в 18:37
поделиться
  • 1
    Вы должны использовать Calendar или GregorianCalendar. Класс Date устарел. – Joseph Earl 20 March 2011 в 17:22
  • 2
    Спасибо, помощник :) Я вообще понятия не имел об этом – eLobato 20 March 2011 в 17:44
  • 3
    Согласно справочной документации Date () ( developer.android.com/reference/java/util/Date.html ) ничего не говорится о том, что класс Date () устарел - однако несколько методов и конструкторов устарели. – Zac Seth 16 April 2011 в 19:40
  • 4
    Это приведет к некорректному результату в смысле текущих пользовательских настроек (например, формат 12/24). Используйте android.text.format.DateFormat.getTimeFormat (контекст контекста), чтобы получить DateFormat для текущих пользовательских настроек. – wonder.mice 27 October 2011 в 21:58
  • 5
    я получил текущую дату, день и время системы, но время не меняется. Мне нужно увеличить время в секундах. Как я могу это сделать? – Bhavesh Hirpara 1 October 2012 в 07:23
  • 6
    Это рекомендуемый способ сделать это, согласно Android API: developer.android.com/reference/java/text/… Спасибо! – M Granja 7 August 2013 в 12:05
  • 7
    @Zac вы правы, даже метод getTime Date еще больше использует полный – user 6 September 2013 в 13:17
  • 8
    Конструктор без параметров Time t = new Time(); будет использовать часовой пояс по умолчанию. По моему опыту, default == current. – William T. Mallard 17 February 2014 в 01:44

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

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String currentDateandTime = sdf.format(new Date());
287
ответ дан Priebe 22 August 2018 в 18:37
поделиться
  • 1
    Это даст время в UTC, должно быть принято к часам. – Andras Balázs Lajtha 21 April 2012 в 06:25
  • 2
    Остерегайтесь, SimpleDateFormat может быть проблематичным, если производительность является проблемой. В моем приложении у меня было настраиваемое представление, в котором было около 20 ярлыков HH: MM, которые представляли конкретные времена (длинные целые числа, содержащие миллисекунды), и равное количество доступных ресурсов. Первоначальное тестирование показало, что взаимодействие было не таким жидким, как я хотел. Когда я профилировал onDraw (), я обнаружил, что запросы SimpleTimeFormatter занимали 80% времени. Фактически, я читаю эту страницу как часть поиска более эффективного форматирования и больше узнаю о Календаре и т. Д. – William T. Mallard 22 July 2013 в 06:15
  • 3
    Да, но больше нет. Я не понимал, что накладные расходы участвуют, и предположил, что это в значительной степени ПОЖО. – William T. Mallard 8 January 2014 в 18:49
  • 4
    Короче: String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); – Pratik Butani 7 March 2014 в 14:02
  • 5
    вы можете вставить sdf.setTimeZone(TimeZone.getDefault()) в середину – Harvey 21 July 2015 в 20:55

Вы также можете использовать android.os.SystemClock. Например, SystemClock.elapsedRealtime () даст вам более точные показания времени, когда телефон спит.

11
ответ дан Quadroid 22 August 2018 в 18:37
поделиться
Time time = new Time();
time.setToNow();
System.out.println("time: " + time.hour+":"+time.minute);

Это даст вам, например, 12:32.

Не забудьте импортировать android.text.format.Time;

11
ответ дан Sam Haque 22 August 2018 в 18:37
поделиться

Легко, вы можете проанализировать время, чтобы получить отдельные значения для текущего времени, следующим образом:

Calendar cal = Calendar.getInstance(); 

  int millisecond = cal.get(Calendar.MILLISECOND);
  int second = cal.get(Calendar.SECOND);
  int minute = cal.get(Calendar.MINUTE);
        //12 hour format
  int hour = cal.get(Calendar.HOUR);
        //24 hour format
  int hourofday = cal.get(Calendar.HOUR_OF_DAY);

То же самое относится к дате, как показано ниже:

Calendar cal = Calendar.getInstance(); 

  int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
  int year = cal.get(Calendar.YEAR);
  int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
  int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);
29
ответ дан SkateJerrySkate 22 August 2018 в 18:37
поделиться

Вы можете (, но больше не должны - см. ниже!) использовать android.text.format.Time :

Time now = new Time();
now.setToNow();

Из ссылка, связанная выше:

Класс Time - это более быстрая замена классов java.util.Calendar и java.util.GregorianCalendar. Экземпляр класса Time представляет собой момент времени, указанный со второй точностью.


ПРИМЕЧАНИЕ 1. Прошло несколько лет с тех пор, как я написал этот ответ, и речь идет о старом , Android-специфический и теперь устаревший класс. Google теперь говорит , что «[t] его класс имеет ряд проблем, и рекомендуется использовать GregorianCalendar ».


ПРИМЕЧАНИЕ 2. Хотя класс Time имеет метод toMillis(ignoreDaylightSavings), это просто удобство перехода к методам, которые ожидают время в миллисекундах. Значение времени только точная до одной секунды; часть миллисекунд всегда 000. Если в цикле вы выполняете

Time time = new Time();   time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...

Результирующая последовательность повторит то же значение, например 1410543204000, до следующей следующей секунды, и в это время 1410543205000 начнет повторяться.

475
ответ дан Thomas Padron-McCarthy 22 August 2018 в 18:37
поделиться
  • 1
    @InsanityOnABun и Мухаммед Бабар. Нет нет нет. Документы говорят, что "задано второй точностью" Даже самый простой тест (получение текущего времени в цикле, toMillis и запись / печать результата) показал бы, что итоговое время имеет 000 в миллисекундах часть! – ToolmakerSteve 12 September 2014 в 18:34
  • 2
    @IgorZelaya Если вам нужна точность в миллисекундах, вы, вероятно, выполняете интервал времени , а не время суток. Android docs рекомендуют SystemClock.uptimeMillis() для временной синхронизации. Поскольку это то, что используется большинством встроенных функций, есть сильная мотивация для его хорошего внедрения на всех устройствах. См. Обсуждение в SystemClock ... Если вы хотите соотнести это со временем дня, в onResume приложения, прочитайте оба этого, и Time / setToNow / toMillis. Помните разницу между ними. – ToolmakerSteve 12 September 2014 в 20:08
  • 3
    Не используйте класс времени . Он будет удален в будущем и имеет много проблем с ним. – Sandy Chapman 21 October 2014 в 15:30
  • 4
    & GT; Этот класс устарел на уровне API 22. Вместо этого используйте GregorianCalendar. См. здесь – Neo 28 June 2015 в 03:05
  • 5
    Фактически, GregorianCalendar был вытеснен много лет назад на Java и в более позднем Android классами java.time , в частности ZonedDateTime . Для более ранних версий Android см. Проекты ThreeTen-Backport и ThreeTenABP . – Basil Bourque 2 May 2018 в 18:20
SimpleDateFormat databaseDateTimeFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat databaseDateFormate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE, MMM d, ''yy");
SimpleDateFormat sdf4 = new SimpleDateFormat("h:mm a");
SimpleDateFormat sdf5 = new SimpleDateFormat("h:mm");
SimpleDateFormat sdf6 = new SimpleDateFormat("H:mm:ss:SSS");
SimpleDateFormat sdf7 = new SimpleDateFormat("K:mm a,z");
SimpleDateFormat sdf8 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");


String currentDateandTime = databaseDateTimeFormate.format(new Date());     //2009-06-30 08:29:36
String currentDateandTime = databaseDateFormate.format(new Date());     //2009-06-30
String currentDateandTime = sdf1.format(new Date());     //30.06.09
String currentDateandTime = sdf2.format(new Date());     //2009.06.30 AD at 08:29:36 PDT
String currentDateandTime = sdf3.format(new Date());     //Tue, Jun 30, '09
String currentDateandTime = sdf4.format(new Date());     //8:29 PM
String currentDateandTime = sdf5.format(new Date());     //8:29
String currentDateandTime = sdf6.format(new Date());     //8:28:36:249
String currentDateandTime = sdf7.format(new Date());     //8:29 AM,PDT
String currentDateandTime = sdf8.format(new Date());     //2009.June.30 AD 08:29 AM

Формат даты. Шаблоны

G   Era designator (before christ, after christ)
y   Year (e.g. 12 or 2012). Use either yy or yyyy.
M   Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d   Day in month. Number of d's determine length of format (e.g. d or dd)
h   Hour of day, 1-12 (AM / PM) (normally hh)
H   Hour of day, 0-23 (normally HH)
m   Minute in hour, 0-59 (normally mm)
s   Second in minute, 0-59 (normally ss)
S   Millisecond in second, 0-999 (normally SSS)
E   Day in week (e.g Monday, Tuesday etc.)
D   Day in year (1-366)
F   Day of week in month (e.g. 1st Thursday of December)
w   Week in year (1-53)
W   Week in month (0-5)
a   AM / PM marker
k   Hour in day (1-24, unlike HH's 0-23)
K   Hour in day, AM / PM (0-11)
z   Time Zone
18
ответ дан Vignesh KM 22 August 2018 в 18:37
поделиться
  • 1
    Хотя другие ответы также верны. Мне понравился этот ответ, так как он помогает связать связанные с этим проблемы. Спасибо @Vighnesh KM – Ankit Gupta 4 October 2016 в 12:56

Если вам нужна текущая дата,

Calendar cc = Calendar.getInstance();
int year=cc.get(Calendar.YEAR);
int month=cc.get(Calendar.MONTH);
int mDay = cc.get(Calendar.DAY_OF_MONTH);
System.out.println("Date", year+":"+month+":"+mDay);

Если вам нужно текущее время,

 int mHour = cc.get(Calendar.HOUR_OF_DAY);
 int mMinute = cc.get(Calendar.MINUTE);
 System.out.println("time_format"+String.format("%02d:%02d", mHour , mMinute ));
8
ответ дан Vivek Mishra 22 August 2018 в 18:37
поделиться

Попробуйте этот код, на котором отображаются текущие дата и время

 Date date = new Date(System.currentTimeMillis());
 SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa",
                         Locale.ENGLISH);
 String var = dateFormat.format(date));
3
ответ дан W4R10CK 22 August 2018 в 18:37
поделиться
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println("time => " + dateFormat.format(cal.getTime()));

    String time_str = dateFormat.format(cal.getTime());

    String[] s = time_str.split(" ");

    for (int i = 0; i < s.length; i++) {
         System.out.println("date  => " + s[i]);
    }

    int year_sys = Integer.parseInt(s[0].split("/")[0]);
    int month_sys = Integer.parseInt(s[0].split("/")[1]);
    int day_sys = Integer.parseInt(s[0].split("/")[2]);

    int hour_sys = Integer.parseInt(s[1].split(":")[0]);
    int min_sys = Integer.parseInt(s[1].split(":")[1]);

    System.out.println("year_sys  => " + year_sys);
    System.out.println("month_sys  => " + month_sys);
    System.out.println("day_sys  => " + day_sys);

    System.out.println("hour_sys  => " + hour_sys);
    System.out.println("min_sys  => " + min_sys);
189
ответ дан Peter Mortensen 22 August 2018 в 18:37
поделиться
  • 1
    Вы должны использовать Calendar или GregorianCalendar. Класс Date устарел. – Joseph Earl 20 March 2011 в 17:22
  • 2
    Спасибо, помощник :) Я вообще понятия не имел об этом – eLobato 20 March 2011 в 17:44
  • 3
    Согласно справочной документации Date () ( developer.android.com/reference/java/util/Date.html ) ничего не говорится о том, что класс Date () устарел - однако несколько методов и конструкторов устарели. – Zac Seth 16 April 2011 в 19:40
  • 4
    Это приведет к некорректному результату в смысле текущих пользовательских настроек (например, формат 12/24). Используйте android.text.format.DateFormat.getTimeFormat (контекст контекста), чтобы получить DateFormat для текущих пользовательских настроек. – wonder.mice 27 October 2011 в 21:58
  • 5
    я получил текущую дату, день и время системы, но время не меняется. Мне нужно увеличить время в секундах. Как я могу это сделать? – Bhavesh Hirpara 1 October 2012 в 07:23
  • 6
    Это рекомендуемый способ сделать это, согласно Android API: developer.android.com/reference/java/text/… Спасибо! – M Granja 7 August 2013 в 12:05
  • 7
    @Zac вы правы, даже метод getTime Date еще больше использует полный – user 6 September 2013 в 13:17
193
ответ дан Peter Mortensen 5 November 2018 в 15:56
поделиться
193
ответ дан Peter Mortensen 5 November 2018 в 15:56
поделиться
193
ответ дан Peter Mortensen 5 November 2018 в 15:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: