【发布时间】:2014-02-26 02:10:24
【问题描述】:
我正在尝试以YYYYMMDD这种格式获取星期一或星期四的日期
星期一应该给我这个 - 20130224(例如)
星期四它应该给我这个 - 20130227(例如)
- 现在,如果我在
Thursday之后或Thursday上运行我的程序,它应该以YYYYMMDD的格式打印Thursday的日期,可以是20130227(本周星期四到来)。 - 如果我在
Monday或Monday之后运行我的程序,那么它应该以相同的格式 YYYYMMMDD 打印星期一的日期,可以是20130224(以昨天的星期一日期为例)
我将如何在 Java 中做到这一点?
以下是我尝试过的 -
Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("EEE");
String text = formatter.format(cal.getTime());
System.out.println(text);
// but how do I check if it is Tuesday but less than Thursday
if(text.equalsIgnoreCase("Tue")) {
// get previous Monday date in YYYYMMDD
}
// and how do I check if it is thursday or greater than Thursday?
else if(text.equalsIgnoreCase("Thur")) {
// get previous Thursday date in YYYYMMDD
}
更新:-
在特定的一周中,如果我在星期四或星期四之后运行我的程序,那么它应该以 YYYYMMDD 格式返回同一周星期四的日期,但如果我在星期一或星期一之后运行我的程序,那么它应该以 YYYYMMDD 格式返回同一周星期一的日期。
例如,在本周,如果我在星期四或星期四之后运行我的程序,那么它应该返回星期四的日期。但是,如果我在同一周的星期一、星期二或星期三运行我的程序,那么它应该返回星期一的日期。
代码:-
下面是我的代码-
public static void main(String[] args) {
try {
Calendar cal = Calendar.getInstance();
SimpleDateFormat toDateFormat = new SimpleDateFormat("yyyyMMdd");
int dow = cal.get(Calendar.DAY_OF_WEEK);
switch (dow) {
case Calendar.THURSDAY:
case Calendar.FRIDAY:
case Calendar.SATURDAY:
case Calendar.SUNDAY:
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.THURSDAY) {
cal.add(Calendar.DATE, -1);
}
break;
case Calendar.MONDAY:
case Calendar.TUESDAY:
case Calendar.WEDNESDAY:
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
cal.add(Calendar.DATE, -1);
}
break;
}
System.out.println(date);
System.out.println(cal.getTime());
System.out.println(toDateFormat.format(cal.getTime()));
} catch (ParseException exp) {
exp.printStackTrace();
}
}
【问题讨论】:
-
你在问什么?如何从 YYYYMMDD 中日期的字符串表示中获取星期几的名称?昨天和后天有什么关系?
-
您是否要求打印最近的周一和周四的日期?
-
我刚刚更新了我的问题..看看,如果有什么不清楚的地方,请告诉我..
-
好的,所以你想要 DAY IF DAY >= TODAY ELSE MONDAY?
-
假设 - 在这周,如果我在星期四或星期四之后运行我的程序,那么它应该以
YYYYMMDD格式返回星期四的日期。但是,如果我在同一周的星期一、星期二或星期三运行我的程序,那么它应该以 YYYYMMDD 格式返回星期一的日期。
标签: java date calendar jodatime simpledateformat