Pytanie Android: format daty w łańcuchu


Mam problem z posortowaniem daty z powodu formatu tych dat.

Otrzymuję datę:

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

I buduję łańcuch z tymi wartościami.

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

Problem polega na tym, że jeśli miesiącem jest na przykład luty, wartość mMonth wynosi 2. Tak więc daty z miesiącami takimi jak październik (10) pojawiają się na mojej liście.

Potrzebuję tego, że ten miesiąc i dzień są sformatowane jak MM i dd. Ale nie wiem, jak to zrobić w moim przypadku.

EDYTOWAĆ :

Rozwiązałem problem za pomocą DateFormat, jak wspomniano powyżej.

Zastąpiłem to:

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

Przez to :

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

I działa. Dziękuję wszystkim za pomoc :)


11
2017-09-02 09:37


pochodzenie


Spróbuj tego: stackoverflow.com/questions/7165901/...  stackoverflow.com/questions/6705031/how-to-format-a-date  stackoverflow.com/questions/6520553/date-and-time-format - Vineet Shukla


Odpowiedzi:


tutaj jest prosty sposób konwertowania Date na String:

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

String strDt = simpleDate.format(dt);


19
2017-09-30 12:21





 Calendar calendar = Calendar.getInstance();
 Date now = calendar.getTime();   
 String timestamp = simpleDateFormat.format(now);

Te mogą się przydać

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

ten format jest równy -> "2016-01-01T09: 30: 00.000000 + 01: 00"

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

ten format jest równy -> "2016-06-01T09: 30: 00 + 01: 00"


8
2017-07-26 07:34





Musisz posortować daty, a nie ciągi. Poza tym, słyszałeś o tym Format daty? To wszystko, co do ciebie pasuje.


3
2017-09-02 09:41



Zastępuję to rozwiązanie, chyba że z jakiegoś niewidocznego powodu naprawdę musisz pracować z tymi ciągami ... ale ernazm uderza w głowę: używaj klas Android: D - Kheldar


tutaj jest przykład formatu daty

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));

1
2017-09-02 09:49





Jeśli rozumiem Twój problem, utworzysz listę dat, a ponieważ są one ciągami, ułożone są w kolejności zgodnej z liczbą słownika, co oznacza, że ​​masz październik przed lutym (10 przed 2).

Gdybym był tobą, zapisałbym moje wyniki w kontenerze, w którym kontroluję punkt wstawienia (jak lista tablic) lub gdzie mogę kontrolować algorytm sortowania.


0
2017-09-02 09:45