SimpleDateFormat синтаксический анализ на сегодняшний день правильный шаблон [дубликат]

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

public Database()
{
    this.context = getActivity();
    DBHelper = new DatabaseHelper(this.context);
}
  • Будьте осторожны, чтобы получить Activity, связанный с фрагмент, использующий getActivity(), вы можете использовать его, но не рекомендуется, чтобы он вызывал утечки памяти.

Я думаю, что лучший aproach должен получать Activity из метода onAttach():

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    context = activity;
}

1
задан pugmarx 26 May 2011 в 09:35
поделиться

5 ответов

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

Date date = (new SimpleDateFormat("MMM dd yyyy HH:mm:ss", Locale.US)).parse(str);
6
ответ дан Andreas Krueger 19 August 2018 в 10:31
поделиться
  • 1
    Конечно, Бог, два часа потерял на googling! – Rinat Tainov 26 May 2011 в 09:42

Попробуйте указать локаль при построении объекта SimpleDateFormat.

1
ответ дан bigoldbrute 19 August 2018 в 10:31
поделиться

tl; dr

LocalDateTime.parse(
    "May 23 2011 12:20:00" , 
    DateTimeFormatter.ofPattern( "MMM d uuuu HH:mm:ss" , Locale.US )
)

Использование java.time

Принимаемый ответ Андреаса Крюгера верен. Вы должны указать Locale, чтобы определить человеческий язык, используемый при переводе названия месяца.

Современный подход позволяет избежать проблемных старых классов времени и времени, вместо того чтобы использовать их замены, классы java.time.

String input = "May 23 2011 12:20:00" ;

Определите шаблон форматирования для соответствия входу с помощью класса DateTimeFormatter .

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

Locale locale = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM d uuuu HH:mm:ss" , locale );

Ваш ввод отсутствует индикация часового пояса или смещение-от-UTC. Итак, мы анализируем как LocalDateTime.

LocalDateTime ldt = LocalDateTime.parse( input , f ) ;

ldt.toString (): 2011-05-23T12: 20: 00


О java.time

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

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

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

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

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

1
ответ дан Community 19 August 2018 в 10:31
поделиться
2
ответ дан Jigar Joshi 19 August 2018 в 10:31
поделиться
1
ответ дан Community 30 October 2018 в 22:51
поделиться
Другие вопросы по тегам:

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