, чтобы получить контекст внутри фрагмента, будет возможно с помощью 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;
}
Возможно, вам потребуется дополнительно указать Locale, если язык вашей виртуальной машины по умолчанию не является английским:
Date date = (new SimpleDateFormat("MMM dd yyyy HH:mm:ss", Locale.US)).parse(str);
Попробуйте указать локаль при построении объекта SimpleDateFormat.
LocalDateTime.parse(
"May 23 2011 12:20:00" ,
DateTimeFormatter.ofPattern( "MMM d uuuu HH:mm:ss" , Locale.US )
)
Принимаемый ответ Андреаса Крюгера верен. Вы должны указать 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?
- Java SE 8 , Java SE 9 , а затем и встроенный. Часть стандартного Java API с интегрированной реализацией. Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и Java SE 7 Большая часть функций java.time портирована на Java 6 & amp; 7 в ThreeTen-Backport .
- Android Проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше) специально для Android. См. Как использовать ThreeTenABP ... .
Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как
Interval
,YearWeek
,YearQuarter
и more .