Как я могу получить текущую дату в Android? - PullRequest
136 голосов
/ 28 декабря 2011

Я написал следующий код

Date d = new Date();
CharSequence s  = DateFormat.format("MMMM d, yyyy ", d.getTime());

Но спрашивает у меня параметр, я хочу текущую дату в строковом формате,

как

28-Dec-2011

, чтобы я мог установить TextView,

объясните немного, если вы считаете, что что-то необходимо, я новичок в разработке Android.

Ответы [ 24 ]

4 голосов
/ 28 декабря 2011

В приведенном ниже коде отображаются время и дата

Calendar cal = Calendar.getInstance();
cal.getTime().toString();
3 голосов
/ 09 февраля 2018

Простая настройка решения Пареша:

Date date = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(date);
2 голосов
/ 05 мая 2017

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

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));
1 голос
/ 13 июля 2019

Я даю современный ответ.

java.time и ThreeTenABP

Чтобы получить текущую дату:

    LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));

Это дает вам объект LocalDate, который вы должны использовать для хранения даты в вашей программе. LocalDate - это дата без времени суток.

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

    DateTimeFormatter userFormatter
            = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
    System.out.println(today.format(userFormatter));

Когда я запускал этот фрагмент сегодня в английской локали США, вывод был:

13 июля 2019

Если вы хотите, чтобы оно было короче, укажите FormatStyle.MEDIUM или даже FormatStyle.SHORT. DateTimeFormatter.ofLocalizedDate использует локаль форматирования по умолчанию, поэтому дело в том, что она выдаст выходные данные, подходящие для этой локали, отличающиеся для разных локалей.

Если ваш пользователь предъявляет особые требования к формату вывода, используйте строку шаблона формата:

    DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
            "d-MMM-u", Locale.forLanguageTag("ar-AE"));

13-يول -2019

Я использую и рекомендую современный Java-API даты и времени java.time. DateFormat, SimpleDateFormat, Date и Calendar, используемые в вопросе и / или во многих других ответах, плохо разработаны и давно устарели. А с java.time работать намного приятнее.

Вопрос: Могу ли я использовать java.time на Android?

Да, java.time прекрасно работает на старых и новых устройствах Android. Для этого требуется как минимум Java 6 .

  • В Java 8 и более поздних версиях и на более новых устройствах Android (начиная с уровня API 26) встроен современный API.
  • В Java 6 и 7 получите ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. Ссылки внизу).
  • На более старых версиях Android используется Android-версия ThreeTen Backport. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

1 голос
/ 26 сентября 2018
Date c = Calendar.getInstance().getTime();
System.out.println("Current time => " + c);

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(c);

Это лучший ответ ...

0 голосов
/ 19 октября 2016
  public static String getDateTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM dd, yyyy HH:mm:ss", Locale.getDefault());
        Date date = new Date();
        return simpleDateFormat.format(date);
    }
0 голосов
/ 13 июля 2019

public static String getcurrentDateAndTime () {

    Date c = Calendar.getInstance().getTime();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
    String formattedDate = simpleDateFormat.format(c);

    return formattedDate;
}

// String currentdate = getcurrentDateAndTime ();

0 голосов
/ 17 мая 2019
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
String date = day + "/" + (month + 1) + "/" + year;

Log.i("TAG", "--->" + date);
0 голосов
/ 19 июня 2018

Я уже использовал это:

Date What_Is_Today=Calendar.getInstance().getTime();
SimpleDateFormat Dateformat = new SimpleDateFormat("dd-MM-yyyy");
String Today=Dateformatf.format(What_Is_Today);

Toast.makeText(this,Today,Toast.LENGTH_LONG).show();

сначала я получаю время, затем я объявляю простой формат даты (чтобы получить дату вроде: 19-6-2018) затем я использую формат, чтобы изменить дату на строку.

0 голосов
/ 05 ноября 2014

Самый простой способ получить текущую дату в текущей локали (локаль устройства!):

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime());

Если вы хотите использовать дату в разных стилях, используйте getDateInstance(int style):

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime());

Другие стили: DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELD и т. Д. (Используйте CTRL + Пробел , чтобы увидеть их все)

Если вам нужно время тоже:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());
...