Android: формат даты в строке - PullRequest
       5

Android: формат даты в строке

17 голосов
/ 02 сентября 2011

У меня проблема с сортировкой даты из-за формата этих дат.

Я получаю дату:

final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

И я строю строку с этими значениями.

dateRappDB = (new StringBuilder()
   .append(mYear).append(".")
   .append(mMonth + 1).append(".")
   .append(mDay).append(" ")).toString();

Проблема в том, что если месяц, например, февраль, значение mMonth равно 2. Так что даты с такими месяцами, как октябрь (10), стоят в моем списке раньше.

Мне нужно, чтобы месяц и день форматировались как ММ и ДД. Но я не знаю, как это сделать в моем случае.

РЕДАКТИРОВАТЬ :

Я решил проблему с помощью DateFormat, как указано выше.

Я заменил это:

dateRappDB = (new StringBuilder()
  .append(mYear).append(".")
  .append(mMonth + 1).append(".")
  .append(mDay).append(" ")).toString();

Под этим:

Date date = new Date(mYear - 1900, mMonth, mDay);
dateFacDB = DateFormat.format("yyyy.MM.dd", date).toString();

И это работает. Спасибо всем за помощь:)

Ответы [ 5 ]

23 голосов
/ 30 сентября 2013

вот простой способ преобразования даты в строку:

SimpleDateFormat simpleDate = new SimpleDateFormat("dd/MM/yyyy");

String strDt = simpleDate.format(dt);

13 голосов
/ 26 июля 2016
 Calendar calendar = Calendar.getInstance();
 Date now = calendar.getTime();   
 String timestamp = simpleDateFormat.format(now);

Это может пригодиться

SimpleDateFormat simpleDateFormat = 
   new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ");

этот формат равен -> "2016-01-01T09: 30: 00.000000 + 01: 00"

SimpleDateFormat simpleDateFormat = 
   new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");

этот формат равен -> "2016-06-01T09: 30: 00 + 01: 00"

4 голосов
/ 02 сентября 2011

Вам нужно сортировать даты, а не строки. Кроме того, вы слышали о DateFormat ? Это делает все, что добавляет для вас.

2 голосов
/ 02 сентября 2011

вот пример для формата даты

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date date = new Date();

System.out.println("format 1 " + sdf.format(date));

sdf.applyPattern("E MMM dd yyyy");
System.out.println("format 2 " + sdf.format(date));
0 голосов
/ 02 сентября 2011

Если я понимаю вашу проблему, вы создаете список дат, и, поскольку они являются строками, они располагаются в порядке словаря по номерам, что означает, что вы получите октябрь до февраля (10 до 2).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...