我在Android中遇到了问题。有些类可以将一些数据保存到数据库中。问题:有时数据库中的数据格式不正确。
当使用“yyyy-MM-dd'T'HH:mm:ssZ”数据格式时,数据库中的数据显示为“2018-03-22T13:43:01 + 0200”。
但有时格式不同:“2018-03-22T13:43: 00 01 + 0200”。两个零出现了。
之后,当尝试从数据库ParseException
获取数据时, SimpleCursorParser.java getDate(columnName)
mathod
public class DateUtils {
public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ";
/**
* @return DateFormat in database
*/
public static DateFormat getDataFormat() {
return new SimpleDateFormat(DATE_FORMAT, Locale.US);
}
}
public class DatabaseContentValues {
private ContentValues mValues;
private final DateFormat mDateFormat;
public DatabaseContentValues(int initialSize) {
mDateFormat = DateUtils.getDataFormat();
mValues = new ContentValues(initialSize);
}
public void putNotNull(String key, Date value) {
if (value != null)
mValues.put(key, mDateFormat.format(value));
}
public ContentValues getDBValues() {
return mValues;
}
}
public class SimpleCursorParser {
private final Cursor mCursor;
private DateFormat mDateFormat;
public SimpleCursorParser(Cursor cursor) {
mCursor = cursor;
mDateFormat = DateUtils.getDataFormat();
}
public Date getDate(String columnName) {
final int columnIndex = mCursor.getColumnIndex(columnName);
if (columnIndex != -1) {
if (!mCursor.isNull(columnIndex)) {
try {
return mDateFormat.parse(
mCursor.getString(columnIndex)
);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
return null;
}
}
public class SomeDbClass {
private Date created;
public SomeDbClass(Cursor cursor) {
SimpleCursorParser parser = new SimpleCursorParser(cursor);
created = parser.getDate("created");
}
public void setCreated(Date created) {
this.created = created;
}
public ContentValues getDbValues() {
DatabaseContentValues values = new DatabaseContentValues();
values.putNotNull(“created”, created);
return values.getDBValues();
}
}
public class SomeActivity {
SomeDbClass dbInfo = new SomeDbClass();
dbInfo.setCreated(new Date());
Uri newUri = getContentResolver().insert(someUri, dbInfo.getDbValues());
Cursor cursor = getContentResolver().query(newUri, null, null, null, null);
cursor.moveToFirst();
SomeDbClass infoInDb = new SomeDbClass(cursor);
infoInDb.getDate(); // <—— when there is bad date format in DB, date value is null here.
cursor.close();
}
答案 0 :(得分:0)
在表日期字段中,在表创建时获取字符串或文本数据类型。 然后将商店日期转换为特定格式。 如果你想添加日期和时间,那么改变这样的格式
public static final String DATE_FORMAT =&#34; yyyy-MM-dd&#39; H&H:mm:ss&#34;;