java - ListView 中的 Android 日期格式

标签 java android date format

感谢Giulio Piancastelli我现在有一个具有多行功能的 ListView 。现在我在格式化第二行的日期时遇到问题。所有的日期都是一样的。在提要中,它们是不同的。我需要有人帮助我将日期格式化为日、月、年(2011 年 10 月 27 日,星期四)。

这是不起作用的代码:

 List<Map<String, String>> data = new ArrayList<Map<String, String>>();
    for (RSSItem item : feed.getAllItems()) {
        Map<String, String> datum = new HashMap<String, String>(2);
        datum.put("title", item.getTitle());

        String dateStr = item.getPubDate();
        SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
        Date dateObj = new Date();
        try {
            dateObj = curFormater.parse(dateStr);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        SimpleDateFormat postFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 

        String newDateStr = postFormater.format(dateObj);

        datum.put("date", newDateStr);
        data.add(datum);
    }
    SimpleAdapter adapter = new SimpleAdapter(this, data,
                                              android.R.layout.simple_list_item_2,
                                              new String[] {"title", "date"},
                                              new int[] {android.R.id.text1,
                                                         android.R.id.text2});

    itemlist.setAdapter(adapter);

    itemlist.setOnItemClickListener(this);

    itemlist.setSelection(0);

Repeating date

如果我删除之前的日期代码,它可以正常工作,但格式不正确。

此代码有效,但格式不正确:

List<Map<String, String>> data = new ArrayList<Map<String, String>>();
    for (RSSItem item : feed.getAllItems()) {
        Map<String, String> datum = new HashMap<String, String>(2);
        datum.put("title", item.getTitle());
        datum.put("date", item.getPubDate().toString());
        data.add(datum);
    }
    SimpleAdapter adapter = new SimpleAdapter(this, data,
                                              android.R.layout.simple_list_item_2,
                                              new String[] {"title", "date"},
                                              new int[] {android.R.id.text1,
                                                         android.R.id.text2});

    itemlist.setAdapter(adapter);

    itemlist.setOnItemClickListener(this);

    itemlist.setSelection(0);

incorrect date format

我需要有人帮助我将日期格式化为日、月、年(2011 年 10 月 27 日,星期四)。谢谢!

最佳答案

问题是您试图解析 字符串的模式与您稍后用来格式化 的模式相同。您应该使用它已经存在的模式来解析它,显然看起来像“Fri, 21 Oct 2011 12:00:00 GMT”。

所以我怀疑你想要这样的东西:

// You probably actually want to set the time zone of the
// formatting pattern - but you'll need to think what time zone you
// really want. We don't know enough to say. Ditto the locale...
private static final DateFormat PARSING_PATTERN = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); 
private static final DateFormat FORMATTING_PATTERN = 
    new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 

...

for (RSSItem item : feed.getAllItems()) {
    Map<String, String> datum = new HashMap<String, String>(2);
    datum.put("title", item.getTitle());

    String outputDate;
    try {
       Date date = PARSING_PATTERN.parse(item.getPubDate());
       outputDate = FORMATTING_PATTERN.format(date);
    } catch (ParseException e) {
       outputDate = "Invalid date"; // Or whatever...
    } 
    datum.put("date", outputDate);
    data.add(datum);
}

关于java - ListView 中的 Android 日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920558/

相关文章:

java - 使用内存将文件添加到 zip java,同时避免保留文件名问题

java - 为什么AIDL接口(interface)不能使用代理?

android - Android 模拟器上没有市场应用程序

android - 在 date.gettime() 中获取负值

javascript - 用 JavaScript 计算昨天的日期

甲骨文。如何输出日期和时间?

java - .NET 还是 Java 用于 Web 开发?

java - 将以 '@' 开头的参数传递给 jcommander

java - JUnit 测试未能测试 system.out.println 结果

android - 代码的位置,以便 'SharedPreferences' 与 'onOptionsItemSelected' 一起使用