Facebook 向我返回一个字符串,例如:
06/15/1992
如何将此字符串日期转换为 Java Date 对象?
我尝试了以下操作,但它返回“Wed Jan 15 00:06:00 UTC 1992”,这不是正确的日期。
String t = "06/15/1992";
SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy");
Date test = dateFormat.parse(t);
Facebook 向我返回一个字符串,例如:
06/15/1992
如何将此字符串日期转换为 Java Date 对象?
我尝试了以下操作,但它返回“Wed Jan 15 00:06:00 UTC 1992”,这不是正确的日期。
String t = "06/15/1992";
SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy");
Date test = dateFormat.parse(t);
您需要1
从月份字段中扣除,因为月份是从0
. 所以"06/15/1992"
应该是"05/15/1992"
得到正确的结果。根据Javadoc:
一个月用 0 到 11 的整数表示;0 是一月,1 是二月,以此类推;因此 11 是 12 月。
并使用具有正确格式字符串的SimpleDateFormatM
:代表月份,m
代表分钟。
String t = "05/15/1992";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date test = dateFormat.parse(t);
用这个:
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
代替
SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy");
由于 SimpleDateFormat 将字母的含义描述为
M : 年中的月
m : 小时中的分钟
有关 SimpleDateFormat 的更多信息,请遵循:http ://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
应该
"MM/dd/yyyy"
m
是分钟。
首先,您需要 MM(月),而不是 mm(分钟)。
Facebook 可以以不同的格式返回日期。这是图形文档:
该人的生日。这是一个固定格式的字符串,如 MM/DD/YYYY。但是,人们可以控制谁可以看到他们出生的年份与月份和日期分开,所以这个字符串只能是年份 (YYYY) 或月份 + 日期 (MM/DD)
https://developers.facebook.com/docs/graph-api/reference/user
您的代码应检查 Facebook 为您提供的日期格式。
String[] dateParts = birthday.split(birthday, "/");
try {
switch (dateParts.length) {
case 2:
// A fully formed date: MM/dd/yyyy
Date dob = new SimpleDateFormat("MM/dd/yyyy, Locale.US).parse(birthday));
break;
case 1:
// Only a day and month: mm/dd.
String month = dateParts[0];
String day = dateParts[1];
// Do something intelligent with the information.
break;
case 0:
// Only a year: yyyy
// Do something
default:
// Unexpected format. Give up!
return null;
}
} catch (ParseException ex) {
Log.e(LOG_TAG, "getAge: Couldn't parse FB date: " + birthday, ex);
return null;
}