解析自定义日期与MM / dd / yyyy hh:mm:ss zzz格式在android中

时间:2014-03-26 12:52:55

标签: java android date datetime date-parsing

我有一个字符串,表示格式为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(),但它没有用。

任何帮助将不胜感激。

4 个答案:

答案 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