Как проанализировать месяц полное строковое использование формы DateFormat в Java?

Я попробовал это:

DateFormat fmt = new SimpleDateFormat("MMMM dd, yyyy");
Date d = fmt.parse("June 27, 2007");

ошибка:

Exception in thread "main" java.text.ParseException: Unparseable date: "June 27, 2007"

В документах Java говорится, что я должен использовать четыре символа для соответствия полной форме. Я только могу использовать MMM успешно с сокращенными месяцами как "июнь", но я должен соответствовать полной форме.

Текст: Для форматирования, если количество букв шаблона равняется 4 или больше, используется полная форма; иначе краткая форма или сокращенная форма используются при наличии. Для парсинга, обе формы приняты, независимы от количества букв шаблона.

http://java.sun.com/j2se/1.6.0/docs/api/java/text/SimpleDateFormat.html

50
задан Morteza Jalambadani 15 May 2019 в 02:18
поделиться

1 ответ

Если у вас есть доступ root к компьютеру, есть несколько способов сделать это на основе процесса инициализации системы (init scripts, systemd и т.д.)

Но если у вас нет root, cron имеет чистый и последовательный способ выполнения программ после перезагрузки.

Сначала выясните, где находится Java на вашем компьютере. Приведенная ниже команда сообщит вам, где она находится:

$ which java

Затем вставьте следующий код в сценарий оболочки, заменив путь java ниже (/usr/bin) путем, полученным из приведенной выше команды.

#!/bin/bash

cd /usr/java/apache-solr-1.4.0/example
/usr/bin/java -jar start.jar

Этот сценарий можно сохранить в каком-либо месте (например, $ HOME) как start.sh. Дайте ему разрешение на всемирное выполнение (для упрощения), выполнив следующую команду:

$ chmod og+x start.sh

Теперь протестируйте сценарий и убедитесь, что он работает правильно из командной строки.

$ ./start.sh

Если все работает хорошо, необходимо добавить его в один из сценариев запуска компьютера. Проще всего добавить следующую строку в конец /etc/rc.local .

# ... snip contents of rc.local ...
# Start Solr upon boot.
/home/somedir/start.sh

Если у вас нет разрешения на редактирование rc.local, вы можете добавить его в пользовательский crontab как таковой. Сначала введите в командной строке следующее:

$ crontab -e

Появится редактор. Добавьте к нему следующую строку:

@reboot /home/somedir/start.sh

Если ваша система Linux поддерживает его (что она обычно и делает), это обеспечит запуск сценария при запуске.

Если у меня нет опечаток выше, это должно сработать хорошо для вас. Дайте мне знать, как это происходит.

-121--1056763-

Для повышения эффективности пространства, O (log (n)) поиска и простого кода попробуйте двоичный поиск по массиву символов. 20 миллионов ключей средней длины 10 составляет 200 миллионов символов: 400MB если нужно 2 байта/символ; 200MB, если вы можете уйти с 1. Поверх этого нужно каким-то образом представить границы между ключами в массиве. Если можно зарезервировать символ разделителя, это один из способов; в противном случае можно использовать параллельный массив смещений int.

Простейший вариант будет использовать массив Последовательностей при высокой стоимости пространства из накладных расходов на объект. Он должен по-прежнему бить хэшбл по космической эффективности, хотя и не так впечатляюще.

-121--1395523-

Вероятно, вы используете языковой стандарт, в котором имена месяцев - не «январь», «февраль» и т.д., а некоторые другие слова на вашем местном языке.

Попробуйте указать нужный языковой стандарт, например Locale.US :

DateFormat fmt = new SimpleDateFormat("MMMM dd, yyyy", Locale.US);
Date d = fmt.parse("June 27,  2007");

. Кроме того, в последовательности даты имеется дополнительный космос, но это не влияет на результат. Это работает в любом случае.

118
ответ дан 7 November 2019 в 10:41
поделиться
Другие вопросы по тегам:

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