Подтвердить что ты не робот

Android SimpleDateFormat, как его использовать?

Я пытаюсь использовать Android SimpleDateFormat следующим образом:

String _Date = "2010-09-29 08:45:22"
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

try {
    Date date = fmt.parse(_Date);
    return fmt.format(date);
}
catch(ParseException pe) {
    return "Date";    
}

Результат хороший, и у меня есть: 2010-09-29

Но если я изменю SimpleDateFormat на

SimpleDateFormat("dd-MM-yyyy");

проблема в том, что я получу 03-03-0035!!!!

Почему и как получить формат, например dd-MM-yyyy?

4b9b3361

Ответ 1

Я полагаю, вы хотите изменить формат даты?

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

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
Date date = fmt.parse(dateString);

SimpleDateFormat fmtOut = new SimpleDateFormat("dd-MM-yyyy");
return fmtOut.format(date);

Начиная с Java 8:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneOffset.UTC);
TemporalAccessor date = fmt.parse(dateString);
Instant time = Instant.from(date);

DateTimeFormatter fmtOut = DateTimeFormatter.ofPattern("dd-MM-yyyy").withZone(ZoneOffset.UTC);
return fmtOut.format(time);

Ответ 2

Ниже приведены все форматы дат, подробнее здесь.

Symbol  Meaning                Kind         Example
D       day in year             Number        189
E       day of week             Text          E/EE/EEE:Tue, EEEE:Tuesday, EEEEE:T
F       day of week in month    Number        2 (2nd Wed in July)
G       era designator          Text          AD
H       hour in day (0-23)      Number        0
K       hour in am/pm (0-11)    Number        0
L       stand-alone month       Text          L:1 LL:01 LLL:Jan LLLL:January LLLLL:J
M       month in year           Text          M:1 MM:01 MMM:Jan MMMM:January MMMMM:J
S       fractional seconds      Number        978
W       week in month           Number        2
Z       time zone (RFC 822)     Time Zone     Z/ZZ/ZZZ:-0800 ZZZZ:GMT-08:00 ZZZZZ:-08:00
a       am/pm marker            Text          PM
c       stand-alone day of week Text          c/cc/ccc:Tue, cccc:Tuesday, ccccc:T
d       day in month            Number        10
h       hour in am/pm (1-12)    Number        12
k       hour in day (1-24)      Number        24
m       minute in hour          Number        30
s       second in minute        Number        55
w       week in year            Number        27
G       era designator          Text          AD
y       year                    Number        yy:10 y/yyy/yyyy:2010
z       time zone               Time Zone     z/zz/zzz:PST zzzz:Pacific Standard 

Ответ 3

Я думаю, что это Ссылка может помочь вам

ИЛИ

    Date date = Calendar.getInstance().getTime();
    //
    // Display a date in day, month, year format
    //
    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
    String today = formatter.format(date);
    System.out.println("Today : " + today);

Ответ 4

String _Date = "2010-09-29 08:45:22"
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat fmt2 = new SimpleDateFormat("dd-MM-yyyy");
    try {
        Date date = fmt.parse(_Date);
        return fmt2.format(date);
    }
    catch(ParseException pe) {

        return "Date";    
    }

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

Ответ 5

Это сработало для меня...

@SuppressLint("SimpleDateFormat")
private void setTheDate() {
    long msTime = System.currentTimeMillis();
    Date curDateTime = new Date(msTime);
    SimpleDateFormat formatter = new SimpleDateFormat("MM'/'dd'/'y hh:mm");
    curDate = formatter.format(curDateTime);
    mDateText.setText("" + curDate);
}

Ответ 6

Вот простой пример использования SimpleDateFormat в Android Studio 3 и Java 9:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
Date date = sdf.format(strDate);

Примечание:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); показывает Некоторое предупреждение об устаревании в Android Studio 3 Lint. Итак, добавьте вторую параметр Locate.US для указания локализации в формате даты.

Ответ 7

Это потребовало больших усилий. Я сделал много хитов и испытаний, и, наконец, я получил решение. Я использовал "МММ" для показа месяца: JAN

Ответ 8

Если вы ищете дату, месяц и год отдельно

или как использовать буквы из ответа heloisasim

    SimpleDateFormat day = new SimpleDateFormat("d");
    SimpleDateFormat month = new SimpleDateFormat("M");
    SimpleDateFormat year = new SimpleDateFormat("y");

    Date d = new Date();
    String dayS = day.format(d);
    String monthS = month.format(d);
    String yearS = year.format(d);