public static ArrayList listOfHolidays = new ArrayList(); Holidays.holidaysList.add(new Holidays("Sukkot", "09/10/2014")); Holidays.holidaysList.add(new Holidays("Hanukkah", "17/12/2014")); Holidays.holidaysList.add(new Holidays("Purim", "16/03/2014"));
Calendar calendar = Calendar.getInstance(); @Override public String toString() { //DayOfWeek is just an enum of days (strings) return holidayName + " falls on " + DayOfWeek.values()[Calendar.DAY_OF_WEEK - 1]; // Here i get the same day each time } @Override public int compareTo(Holidays another) { if(MainActivity.sortByName == true) { return holidayName.compareToIgnoreCase(another.holidayName); } return convertStringToCal() - another.convertStringToCal(); } private int convertStringToCal() { int year, month, day; day = Integer.valueOf(holidayDate.substring(0, 2)); month = Integer.valueOf(holidayDate.substring(3, 5)); year = Integer.valueOf(holidayDate.substring(6, 10)); calendar = Calendar.getInstance(); calendar.set(year, month, day); return (int) calendar.getTimeInMillis(); }
Collections.sort()
我认为它可能行不通有多种原因。
首先,我不知道您是否省略了Holidays类的部分代码,但实际上从未将calendar对象设置在convertStringToCal()方法之外,但我不知道构造函数中是否也调用了这个方法。
其次也是最有可能是你的问题:
@Override
public String toString() {
//DayOfWeek is just an enum of days (strings)
return holidayName + " falls on "
// Here you are using the constant Calendar.DAY_OF_WEEK
+ DayOfWeek.values()[Calendar.DAY_OF_WEEK - 1]; // Here i get the same day each time
}
它实际上应该是这样的:
@Override
public String toString() {
//DayOfWeek is just an enum of days (strings)
return holidayName + " falls on "
+ DayOfWeek.values()[calendar.get(Calendar.DAY_OF_WEEK)]; // Now you won't get the same day every time. :)
}
一些附加说明:
我将使用date
对象保存日期,并使用simpledateformat
将字符串转换为日期,反过来也可以。
public class Holidays {
private final Calendar calendar = Calendar.getInstance();
private final String holidayName;
public Holidays(String holidayName, Date date) {
this.holidayName = holidayName;
this.calendar.setTime(date);
}
@Override
public int compareTo(Holidays another) {
// Generally you should avoid passing information statically between Activities
if(MainActivity.sortByName == true) {
return holidayName.compareToIgnoreCase(another.holidayName);
}
return getTimeInMillis() - another.getTimeInMillis();
}
public long getTimeInMillis() {
return this.calendar.getTimeInMillis();
}
@Override
public String toString() {
//DayOfWeek is just an enum of days (strings)
DayOfWeek day = DayOfWeek.values()[calendar.get(Calendar.DAY_OF_WEEK)]; // Now you won't get the same day every time. :)
return String.format("%s falls of %s", this.holidayName, day);
}
}
// Create date objects with calendar.
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2014);
calendar.set(Calendar.MONTH, 3);
calendar.set(Calendar.DAY_OF_MONTH, 27);
Date date = calendar.getTime();
通过SimpleDateFormat
,您可以转换String
和Date
对象,如下所示:
// The String pattern defines how date strings are parsed and formated
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String dateString = "09/10/2014";
// Convert a String to Date
Date dateFromDateString = sdf.parse(dateString);
// Convert a Date to a String
String dateStringFromDate = sdf.format(dateFromDateString);
如果您需要的不仅仅是date
和string
对象的简单转换,那么您可以使用dateformat
。这几乎是日期字符串转换的劳斯莱斯。它可以以一种更通用的方式解析和格式化字符串,而实际上不需要模式,并且它自动地考虑区域设置等等。
或者您可以使用JodaTime:)
问题内容: 当我从命令行调用存储的proc时,我得到以下信息。 这是我的Java代码的片段 当我执行该语句时,仅返回event_table结果。我阅读以下查询: 我试图避免对数据库发出多个请求,因为它非常慢(300毫秒,具体取决于多少结果) 可能吗? 问题答案: 我找到了这篇很棒的文章。http://www.herongyang.com/JDBC/MySQL-CallableStatement-M
我需要创建三个类:客户、产品和订单。我希望我的orders类接受来自客户和产品的实例(即,能够让一个订单包含关于客户和他们正在订购的产品的信息)。在JavaScript中设置这一点的最佳方法是什么?我最初想让我的customer和products类扩展order类,但我是否能够让order同时扩展customer和products类?
我想同步/更新不同的日历(iCal的奖励积分,但感谢它可能必须是Google Cal),用于一张Google工作表中的不同客户 从本页: https://docs.google.com/spreadsheets/d/1f6qUjGYHZtRRGCbyh5oNzM7o64B-wlkrTpB1ac64I2U/edit#gid=0 我希望C、D、E、F、G列中的信息输入到日历条目中,并根据a列中的日期与
我有以下表格: 表名称 -----| 表字段 图书--------------------图书id、图书名称 作者 ---------- | author_id、author_name 图书作者-作者id,图书id 用户------------------用户id、用户名 注释----------注释id,注释 评论|用户|评论| id、用户id、图书id、日期 我需要显示书名,它的作者,以及为这
问题内容: 假设我的表包含以下内容: 每次通过while循环。我想获取价格值的总和,但ID中的每个不同值仅获取一次 因此,以上述示例为例,我将得到类似以下内容的信息: 补充一下,我可能偶然发现了类似的帖子。问题是其他职位使用Oracle,另一方面我正在使用MySQL。 问题答案: 你需要和
我有一个特点,它是由同一个结构以不同的方式实现的。为了实现这一点,我有不同的结构,它们有不同的实现。对于抽象,我将这些结构称为A-Z: 有没有其他方法来实现这一点,以便结构的每个实例都有一个不同的trait实现,或者创建一个新结构是最好的方法? 我不熟悉编译语言。我所做的大部分工作都是使用Python和TypeScript。