我的格式为日期字符串:
Oct 28, 2015, 05.15PM IST
所以我想使用SimpleDateFormat将它解析为Date对象:
String date = "Oct 28, 2015, 05.15PM IST";
SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy, hh.mmaa zzz", Locale.US);
Date myDate = format.parse(date);
但我得到例外:
java.text.ParseException: Unparseable date: "Oct 28, 2015, 05.15PM IST" (at offset 22)
我做错了什么?
答案 0 :(得分:0)
根据我在指定AM / PM组件时对SimpleDateFormat
的理解,您不需要使用两个a或三个z。您正在尝试解析" 2015年10月28日,05.15PM IST"具有多个AM / PM说明符,以及多个时区说明符。将格式对象更改为SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy, hh.mma z", Locale.US);
答案 1 :(得分:0)
问题是SimpleDateFormat无法解析" IST"作为时区因为它含糊不清。
我根据 Adriaan Koster's answer解决了这个问题。 但实际上它只适用于我切割后#34; IST"从我的日期字符串。 因此问题的完整解决方案如下:
Uri fileUri = data.getData();
Bitmap b = decodeUri(fileUri);
your_image_view.setImageBitmap(b);
// here decodeUri method will directly return you Bitmap which can be set to imageview
private Bitmap decodeUri(Uri selectedImage) throws FileNotFoundException
{
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(getContentResolver()
.openInputStream(selectedImage), null, o);
final int REQUIRED_SIZE = 72;
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 1;
while (true)
{
if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE)
{
break;
}
width_tmp /= 2;
height_tmp /= 2;
scale *= 2;
}
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver()
.openInputStream(selectedImage), null, o2);
return bitmap;
}