【发布时间】:2011-05-10 03:13:58
【问题描述】:
我怎样才能找到上一个(前一个)“星期五”的日期或从指定日期开始的任何其他日期?
public getDateOnDay(Date date, String dayName) {
// ?
}
【问题讨论】:
-
好吧,我会说你被困住了。你没有任何代码。如果您需要帮助,请先尝试一下。您更有可能获得有用的答案。
我怎样才能找到上一个(前一个)“星期五”的日期或从指定日期开始的任何其他日期?
public getDateOnDay(Date date, String dayName) {
// ?
}
【问题讨论】:
我不会给出答案(先自己尝试一下!),但是,也许这些提示可以帮助你。
我希望这会有所帮助。再次,我鼓励你总是先自己尝试这个问题。从长远来看,您可以通过这种方式学到更多东西,并成为更好的开发人员。
【讨论】:
这是一个蛮力的想法。检查当前日期是否为星期五。如果不是,则从今天开始减去 1 天。检查新日期是否为星期五。如果没有,请从新日期中减去 1 天……依此类推……你明白了。
【讨论】:
试试这个:
/**
* Return last day of week before specified date.
* @param date - reference date.
* @param day - DoW field from Calendar class.
* @return
*/
public static Date getDateOnDay(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.WEEK_OF_YEAR, -1);
cal.set(Calendar.DAY_OF_WEEK, day);
return cal.getTime();
}
祝你好运。
【讨论】:
我正在使用这个:
private Date getDateOnDay(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.setFirstDayOfWeek(day);
cal.set(Calendar.DAY_OF_WEEK, day);
return cal.getTime();
}
【讨论】:
获取日期的星期几。查看日历 javadoc。一旦你有了星期几,你就可以计算一个偏移量来应用到日期。
【讨论】:
要获取基于工作日的任何最新日期:
private String getWeekDayDate(String weekday){
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Calendar start = Calendar.getInstance();
Date now = new Date();
start.setTime(now);
Calendar end = Calendar.getInstance();
end.add(Calendar.DATE, -7);
while (start.after(end))
{
try {
Date temp = start.getTime();
String day = new SimpleDateFormat("EEEE").format(temp);
if(day.equalsIgnoreCase(weekday))
return formatter.format(temp);
}catch(Exception e) {
e.printStackTrace();
}
start.add(Calendar.DAY_OF_YEAR, -1);
}
return null;
}
要获取最新的星期五日期,请将工作日指定为“星期五”
【讨论】:
//如果要传入任意日期,则获取从今天开始的最后四个星期五 //只需要调整代码,其他方法基本上只是将日期格式化为 dd/MM/YYYY 格式。 函数GetLastFourFridays() { 今天=新日期(); LastFridayDate = new Date();
LastFridayDate.setDate(LastFridayDate.getDate() - 1);
while (LastFridayDate.getDay() != 5) {
LastFridayDate.setDate(LastFridayDate.getDate() - 1);
}
var lfd = LastFridayDate
lfd = convertDate(lfd)
document.getElementById("first_week_th").innerHTML = lfd
LastFridayDate.setDate(LastFridayDate.getDate() - 1);
var friLastWeek = LastFridayDate
while (friLastWeek.getDay() != 5) {
friLastWeek.setDate(friLastWeek.getDate() - 1);
}
var flw = friLastWeek
flw = convertDate(flw)
document.getElementById("second_week_th").innerHTML = flw
friLastWeek.setDate(friLastWeek.getDate() - 1);
var friTwoWeeks = friLastWeek
while (friTwoWeeks.getDay() != 5) {
friTwoWeeks.setDate(friTwoWeeks.getDate() - 1);
}
var ftw = friTwoWeeks
ftw = convertDate(ftw)
document.getElementById("third_week_th").innerHTML = ftw
friTwoWeeks.setDate(friTwoWeeks.getDate() - 1);
var friThreeWeeks = friTwoWeeks
while (friThreeWeeks.getDay() != 5) {
friThreeWeeks.setDate(friThreeWeeks.getDate() - 1);
}
var ftww = friThreeWeeks
ftww = convertDate(ftww)
document.getElementById("fourth_week_th").innerHTML = ftww
}
//转换日期 00//00//0000 函数转换日期(输入格式){ 功能垫{返回(s
【讨论】: