java中的日期格式

时间:2016-10-25 10:05:56

标签: java android

我的回复是

 "pickTime": "Tue Oct 25 03:57 PM" 

我的编码如下:

SimpleDateFormat curFormater = new SimpleDateFormat("E MMM dd hh:mm a");
                SimpleDateFormat dateFormater = new SimpleDateFormat("E MMM dd");
                SimpleDateFormat timeFormater = new SimpleDateFormat("hh:mm a");

String time = jsonObj.optString("pickTime");
Date dateObj = curFormater.parse(time); 
String newDateStr = dateFormater.format(dateObj); 
String newTimeStr = timeFormater.format(dateObj);

问题是我在字符串time中得到相同的值,但在dateobj中我得到了值

"sun oct 25 15.57 pm"

newDatestr as

"sun oct 25"

请提前帮助我解决这个问题

4 个答案:

答案 0 :(得分:0)

这是1970年10月25日(Linux时间)。

你必须弄清楚如何将年份添加到日期,因为它没有采用当前年份。

取而代之的是默认值(linux时间从1970年1月1日开始)。

答案 1 :(得分:0)

您的回复不包含年份。所以你的输出结果不正确。

下面的代码正在试用中。

Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        SimpleDateFormat curFormater = new SimpleDateFormat("E MMM dd hh:mm a yyyy");
        SimpleDateFormat dateFormater = new SimpleDateFormat("E MMM dd");
        SimpleDateFormat timeFormater = new SimpleDateFormat("hh:mm a");

        String time = "Tue Oct 25 03:57 PM" + " " + calendar.get(Calendar.YEAR);
        Date dateObj = null;
        try {
            dateObj = curFormater.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Logger.logd(this, dateObj.toString());

        String newDateStr = dateFormater.format(dateObj);
        String newTimeStr = timeFormater.format(dateObj);
        Logger.logd(this, newDateStr + " " + newTimeStr);

答案 2 :(得分:0)

  SimpleDateFormat formatter =new SimpleDateFormat("EEE MMM dd hh:mm a");
     Date date2 = formatter.parse("Tue Oct 25 03:57 PM");
    long time = date2.getTime();
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(time);
    cal.set(Calendar.YEAR, 2016);
    String formatted = formatter.format(cal.getTime());

    System.out.println(formatted);

@David Marciel是对的。你应该指定年份。

答案 3 :(得分:-1)

SimpleDateFormat curFormater = new SimpleDateFormat("E MMM dd hh:mm a");

这就是为什么你把E.

SimpleDateFormat curFormater = new SimpleDateFormat("EEE MM dd yyyy hh:mm a");

我认为这应该是格式化。