我有一个字符串,表示格式为MM/dd/yyyy hh:mm:ss
的日期,如下所示:
"03/26/2014 17:32:25 IST"<BR>
当我将字符串解析为日期时:
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss zzz");
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getDefault());
cal.setTime(sdf.parse("03/26/2014 17:32:25 IST"));
String output = sdf.parse(sdf.format(cal.getTime()));
我尝试在SimpleDateFormat中添加Locale.getDefault()
,但它没有用。
任何帮助将不胜感激。
答案 0 :(得分:2)
第一个错误:您尝试在java.util.Date
上设置String
(解析方法的结果)(编译错误)。
第二个错误:您应该使用模式符号HH而不是hh(根据17小时的小时输入,24小时时钟)。
第三个错误:在格式对象上设置时区,而不是在日历上(有希望对应于时区IST - 无论是在以色列还是在印度)。
已更新:似乎&#34; IST&#34;不是Android设备上的已知时区名称。 Google-Android的动机可能是为了避免含糊不清的名字(&#34;以色列标准时间&#34;或者#34;印度标准时间&#34;)因此Android在其资源库中有其他不同的名称。您可以像这种解决方法一样尝试文本预处理:
if (timestampText.endsWith(" IST")) {
timestampText = timestampText.substring(0, timestampText.length() - 4);
}
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
java.util.Date d = sdf.parse(timestampText);
同时检查方法DateFormatSymbols.getInstance().getZoneStrings()
的输出,以查看Android是否需要另一个时区名称,而不是&#34; IST&#34; (在Java-VM上更广泛地传播)。
答案 1 :(得分:1)
Try Below code you need to assign output into Date data type :
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss zzz");
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getDefault());
cal.setTime(sdf.parse("03/26/2014 17:32:25 IST"));
java.util.Date output = sdf.parse(sdf.format(cal.getTime()));
答案 2 :(得分:0)
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss zzz");
Date parse = null;
Calendar calendar = Calendar.getInstance();
try {
parse = sdf.parse("03/26/2014 17:32:25 IST");
calendar.setTime(parse);
} catch (ParseException e) {
e.printStackTrace();
}
Toast.makeText(this, calendar.getTime() + "", Toast.LENGTH_SHORT).show();
}
}
答案 3 :(得分:0)
尝试以下代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String date_parse="2015-04-09 05:06:14";
try{
SimpleDateFormat sdfSource = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdfSource.parse(date_parse);
SimpleDateFormat sdfDestination = new SimpleDateFormat("MMMM dd,yyyy hh:mm a");
date_parse = sdfDestination.format(date);
System.out.println("Date is converted from dd/MM/yy format to MMMM dd,yyyy hh:mm a");
System.out.println("Converted date is : " + date_parse);
} catch(Exception e){
System.out.println(e.getMessage());
}
}
输出: 日期从dd / MM / yy格式转换为MMMM dd,yyyy hh:mm a 转换日期为:April 09,2015 05:06 AM