我正在从提供HH:mm:ss
形式的时间戳的web服务中检索数据我正在使用SimpleDateFormat将此字符串转换为日期对象,然后根据需要更改其时区,并将其从24小时转换为12小时时间。
问题:当一个时间输入12点时,它看起来像00:00:00
所以12:05是00:05:00
当我得到结果他们看起来像这样。
次以22:00:00
加入00:01:00
次检索10:00 pm
到0:01 am
我一直在四处寻找是否有办法解决它,但我觉得我需要制作一个特殊情况并自己解析字符串,如果它在小时的地方有0。
非常感谢任何帮助。
public String parseTime(String time) {
String mTime = null;
TimeZone thisTimeZone = TimeZone.getDefault();
TimeZone ourTimeZone = TimeZone.getTimeZone("America/Los_Angeles");
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.US);
SimpleDateFormat sdfThisTimeZone = new SimpleDateFormat("K:mm:a",
Locale.getDefault());
Date date = null;
sdfThisTimeZone.setTimeZone(thisTimeZone);
sdf.setTimeZone(ourTimeZone);
try {
date = sdf.parse(time);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mTime = sdfThisTimeZone.format(date.getTime());
//**********************************New: Does Not Work********************************
DecimalFormat nft = new DecimalFormat("00"); mTime = nft.format(mTime);
//**********************************New **********************************************
return mTime;
}
我已经尝试过使用DecimalFormat的行,但我现在只是将它复制到代码中,看看它是否可行。不幸的是它让我的应用崩溃了。我发布的代码是在异步任务中执行的,所以我不确定这是否有任何区别但仍然不是你的帮助。最终我会解决这个问题。但是现在这是一个如此小的细节,只在凌晨12点发生1小时,我正在转向更大的问题。如果有人能够对此有所了解那就太棒了。
答案 0 :(得分:0)
String getConvertedDateTime(String dateTime){
String convertedDateTime = dateTime;
if (convertedDateTime != null
&& !convertedDateTime.equalsIgnoreCase("")
&& !convertedDateTime.equalsIgnoreCase("null")) {
try {
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Calendar calendar = Calendar.getInstance();
java.util.Date convertedDate = formatter
.parse(convertedDateTime);
formatter.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
convertedDateTime = formatter.format(convertedDate.getTime());
} catch (Exception e) {
e.printStackTrace();
}
}
return convertedDateTime;
}