【发布时间】:2018-01-15 21:13:03
【问题描述】:
我使用一种方法将Date 的列表转换为String 以将它们显示给用户。此方法在 API
这是我的方法:
protected List<String> getValidPeriods() {
ArrayList<String> validPeriods = new ArrayList<>();
Date startDate = isSnis() ? Config.snisStartDate() : Config.dashboardsStartDate();
Date endDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
while(calendar.getTime().before(endDate)){
validPeriods.add(DateUtils.format(calendar.getTime(), PERIOD_FORMAT));
calendar.add(Calendar.MONTH, 1);
}
return validPeriods;
}
PERIOD_FORMAT在哪里
public static final String PERIOD_FORMAT = "MMMM yyyy";
DateUtils.format() 方法在哪里:
public static String format(Date date, String format) {
if (date != null)
return new SimpleDateFormat(format, Locale.getDefault()).format(date);
return "";
}
我可以说这是引发问题的日期格式,因为删除行 return new SimpleDateFormat(format, Locale.getDefault()).format(date); 并用硬编码值替换它会停止应用程序的冻结。另一个指标是我们可以看到在方法跟踪期间它花费了 48.9% 的时间:
知道为什么吗?
更新 #1 另外,它的格式不正确。它应该给出“2016 年 11 月”,它给出“0008 年 11 月”。也许这是相关的。
【问题讨论】:
标签: android performance simpledateformat android-7.0-nougat