如何将android联系人的出生日期字符串转换为日期格式?
在我的Android项目中,我想将联系人的出生日期转换为用户语言环境中的日期字符串如何将android联系人的出生日期字符串转换为日期格式?,android,Android,在我的Android项目中,我想将联系人的出生日期转换为用户语言环境中的日期字符串 String whereBday = ContactsContract.Data.MIMETYPE + "= ? AND " + ContactsContract.CommonDataKinds.Event.TYPE + "=" + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY; Stri
String whereBday = ContactsContract.Data.MIMETYPE + "= ? AND " +
ContactsContract.CommonDataKinds.Event.TYPE + "=" +
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY;
String[] paramsBday = new String[]{
ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE };
Cursor bDayCursor = contentResolver.query(ContactsContract.Data.CONTENT_URI,
null, whereBday, paramsBday, null);
while (bDayCursor.moveToNext()) {
//date of birth as String format
String bDay = bDayCursor.getString(bDayCursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE));
//converting string to date format
SimpleDateFormat formatter = new SimpleDateFormat(bDay);
Date myDate= formatter.parse(mytime);
DateFormat f = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.getDefault());
String formattedDate = f.format(new Date());
System.out.println("Date: " + formattedDate);
}
bDayCursor.close();
不幸的是,对于日期格式的存储方式似乎没有固定的标准。最好的解决方案是循环查看日期格式列表,看看它是否匹配以下任何一种格式。一旦你得到
日期
对象,你就可以用你自己的格式化程序修改它以任何格式打印。此外,如果未找到它,则可以检查不支持的格式,并将其添加到数组中
您可以使用以下代码:
public static final SimpleDateFormat[] birthdayFormats = {
new SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy.MM.dd"),
new SimpleDateFormat("yy-MM-dd"),
new SimpleDateFormat("yy.MM.dd"),
new SimpleDateFormat("yy/MM/dd"),
new SimpleDateFormat("MMM dd, yyyy")
};
private void printBirthdays() {
Cursor cursor = getContactsBirthdays();
int bDayColumn = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE);
while (cursor.moveToNext()) {
String bDay = cursor.getString(bDayColumn);
Date birthday = null;
boolean found = false;
for (SimpleDateFormat f : birthdayFormats) {
try {
birthday = f.parse(bDay);
Log.e(TAG, bDay + " = " + birthday.toString());
found = true;
break;
} catch (ParseException e) {
}
}
if (!found) {
Log.e(TAG, bDay);
}
}
}
private Cursor getContactsBirthdays() {
Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[]{
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Event.CONTACT_ID,
ContactsContract.CommonDataKinds.Event.START_DATE
};
String where =
ContactsContract.Data.MIMETYPE + "= ? AND " +
ContactsContract.CommonDataKinds.Event.TYPE + "=" +
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY;
String[] selectionArgs = new String[]{
ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE
};
String sortOrder = null;
return managedQuery(uri, projection, where, selectionArgs, sortOrder);
}
不幸的是,对于日期格式的存储方式似乎没有固定的标准。最好的解决方案是循环查看日期格式列表,看看它是否匹配以下任何一种格式。一旦你得到
日期
对象,你就可以用你自己的格式化程序修改它以任何格式打印。此外,如果未找到它,则可以检查不支持的格式,并将其添加到数组中
您可以使用以下代码:
public static final SimpleDateFormat[] birthdayFormats = {
new SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy.MM.dd"),
new SimpleDateFormat("yy-MM-dd"),
new SimpleDateFormat("yy.MM.dd"),
new SimpleDateFormat("yy/MM/dd"),
new SimpleDateFormat("MMM dd, yyyy")
};
private void printBirthdays() {
Cursor cursor = getContactsBirthdays();
int bDayColumn = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE);
while (cursor.moveToNext()) {
String bDay = cursor.getString(bDayColumn);
Date birthday = null;
boolean found = false;
for (SimpleDateFormat f : birthdayFormats) {
try {
birthday = f.parse(bDay);
Log.e(TAG, bDay + " = " + birthday.toString());
found = true;
break;
} catch (ParseException e) {
}
}
if (!found) {
Log.e(TAG, bDay);
}
}
}
private Cursor getContactsBirthdays() {
Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[]{
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Event.CONTACT_ID,
ContactsContract.CommonDataKinds.Event.START_DATE
};
String where =
ContactsContract.Data.MIMETYPE + "= ? AND " +
ContactsContract.CommonDataKinds.Event.TYPE + "=" +
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY;
String[] selectionArgs = new String[]{
ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE
};
String sortOrder = null;
return managedQuery(uri, projection, where, selectionArgs, sortOrder);
}
将android联系人出生日期字符串转换为日期格式将android联系人出生日期字符串转换为日期格式