Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Другие два ответа прекрасны, но если Вы на самом деле хотите дату чего-то еще, можно использовать datetime
модуль:
from datetime import datetime
d = datetime.strptime('2007-07-18 10:03:19', '%Y-%m-%d %H:%M:%S')
day_string = d.strftime('%Y-%m-%d')
Это могло бы быть излишество на данный момент, но это пригодится. Вы видите все спецификаторы формата здесь .
В Вашем случае просто используйте разделение:
>>> d1="2007-07-18 10:03:19"
>>> d1.split()[0]
'2007-07-18'
>>>
(1-я часть после разделения с пробелом)
, Если Вы настаиваете на том, чтобы использовать strptime
, формат "%Y-%m-%d %H:%M:%S"
:
>>> import time
>>> time.strptime(d1,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2007, tm_mon=7, tm_mday=18, tm_hour=10, tm_min=3, tm_sec=19, tm_wday=2, tm_yday=199, tm_isdst=-1)
>>> time.strftime("%Y-%m-%d", _)
'2007-07-18'
>>>
Вероятно, не, что Вы ищете, но Вы могли просто разделить строку:
post["date"].split()[0]
дал бы Вам '2007-07-18'
Можно использовать модуль parsedatetime .
>>> from parsedatetime.parsedatetime import Calendar
>>> c = Calendar()
>>> c.parse("2007-07-18 10:03:19")
((2008, 11, 19, 10, 3, 19, 2, 324, 0), 2)
Можно использовать mx.DateTime
модуль от , eGenix
import mx
date_object = mx.DateTime.Parser.DateTimeFromString('2007-07-18 10:03:19')
print "%s-%s-%s" % (date_object.year, date_object.month, date_object.day)
произведет: 2007-07-18