Это уже освещалось бесчисленное количество раз. Так что поиск переполнения стека для получения дополнительной информации.
Никогда не используйте Date
или Calendar
. Используйте только java.time . Аналогично, Joda-Time также вытесняется java.time (оба возглавляются одним и тем же человеком, Стивеном Коулборном).
Оба ваших строковых ввода имеют стандартный формат ISO 8601. Классы java.time по умолчанию используют эти форматы при разборе / генерации строк.
В первом отсутствует индикатор смещения от UTC или часового пояса, поэтому не представляет момент.
LocalDateTime.parse( "2018-07-21T00:50:39" )
Второй в Z
, что означает UTC, и произносится как «Зулу».
Instant.parse( "2017-11-20T23:18:27.529Z" )
Чтобы обработать оба формата в одном методе, найдите во входной строке наличие Z
и ответвления соответственно. Кроме того, ловушка для исключения в случае, если вы получаете неожиданные входные данные
Если у вас должен быть объект java.util.Date
, посмотрите этот класс JavaDoc для новых методов from
& amp; to…
на старых классах, которые конвертируют в / из java.time классов. Как я уже сказал, все это было освещено много раз, поэтому ищите больше информации.
"hello world".count("lo")
возвраты пять. Это соответствовало третьим, четвертым, пятым, восьмым, и десятым символам. Позволяет вызову этот набор один.
"hello world".count("o")
возвраты два. Это соответствовало пятым и восьмым символам. Позволяет вызову этот набор два.
"hello world".count("lo", "o")
считает пересечение множеств один и два.
Пересечение является третьим набором, содержащим все элементы набора два, которые находятся также в наборе один. В нашем примере оба набора один и два содержат пятые и восьмые символы от строки. Это - два общих количества символов. Так, count
возвраты два.
Если Вы даете количеству больше чем один аргумент, оно только считает буквы, которые находятся во всех аргументах. Таким образом в Вашем первом примере, это только считает o. В Вашем втором примере это только считает e.