嗨,我有下面的方法,它采用 UTC 日期时间字符串的值,将其格式化为本地显示并返回:
public static String convertDateStringUTCToLocal(String sourceUtcDateTimeString)
{
SimpleDateFormat simpleDataFormat = new SimpleDateFormat();
simpleDataFormat.setTimeZone(getCurrentTimeZone());
String outputUTCDateTimeString = simpleDataFormat.parse(sourceUtcDateTimeString, new ParsePosition(0)).toString();
return outputUTCDateTimeString;
}
public static TimeZone getCurrentTimeZone()
{
Calendar calendar = Calendar.getInstance();
TimeZone outputTimeZone = calendar.getTimeZone();
return outputTimeZone;
}
我使用 getCurrentTimeZone() 因为用户可以随时更改他们的本地设置,我不想硬编码格式。
调试时,参数 sourceUtcDateTimeString 的值为 'Mon Apr 15 13:54:00 GMT 2013',我发现 'simpleDataFormat.parse(sourceUtcDateTimeString, new ParsePosition(0))' 给我 'null' 和 'simpleDataFormat.parse (sourceUtcDateTimeString, new ParsePosition(0)).toString()' 抛出错误“java.lang.NullPointerException at toString()”。
看起来 ParsePosition(0) 没有任何内容,但我对 Android 开发人员真的很陌生,不知道为什么会发生这种情况以及如何解决它,有人可以帮忙解决吗?我在这个问题上停留了几个小时。
提前致谢。