大家好,希望你们好, 如果你有任何可以提供帮助的想法,那么问题就是我完全被困住了吗?
在我的应用中,我可以获得如下的当前日期和时间。但我需要的是上周四的日期刚刚过去,但不知道该怎么做?
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy-HH:mm");
Calendar cal = Calendar.getInstance();
String start = "Last Thursday was: ";
String date = (dateFormat.format(cal.getTime()));
String all = (start + date);
提前感谢任何建议。 吨。
答案 0 :(得分:3)
不是特定于Android的,但通常是
然后上周四(今天不包括今天是星期四)是:
R - (Rd - X + L)days
我不会说这种语言,但根据其他答案,这似乎是代码。简短又甜蜜。如果不正确,请编辑。
Calendar cal = Calendar.getInstance(); //today
cal.add (Calendar.DATE,
-( cal.get(Calendar.DAY_OF_WEEK) - Calendar.THURSDAY + Calendar.SATURDAY )
);
答案 1 :(得分:0)
尝试这样的事情:
long startTime = cal.getTimeInMillis();
cal.set (Calendar.DAY_OF_WEEK, Calendar.THURSDAY); // may move forwards or backwards
if (cal.getTimeInMillis() > startTime) // we went forwards, so
cal.add (Calendar.DATE, -7); // go back one week.
答案 2 :(得分:0)
Calendar cal = Calendar.getInstance();
while (cal.get( Calendar.DAY_OF_WEEK ) != Calendar.THURSDAY)
{
cal.add( Calendar.DAY_OF_YEAR, -1 );
}
Date lastThursday = cal.getTime();
Date
对象lastThursday
将代表当前的当前时间,但是过去最近的星期四。然后,您可以使用当前时间格式化Date
。
如果您不需要String
中的小时和分钟,请将SimpleDateFormatter
更改为:
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
上述解决方案包括今天是最近一个星期四的可能性。如果您今天不想包含,请改为使用do-while
循环:
do
{
cal.add( Calendar.DAY_OF_YEAR, -1 );
}
while (cal.get( Calendar.DAY_OF_WEEK ) != Calendar.THURSDAY);
答案 3 :(得分:0)
您可以使用方法
public static String getLastThursday(){
Calendar cal = Calendar.getInstance();
cal.add (Calendar.DATE, -( cal.get( Calendar.DAY_OF_WEEK ) -5 + 7 ) );
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
String lastThursday = df.format(cal.getTime());
return lastThursday;
}
将使用上一个星期四的日期格式化字符串。您可以根据需要修改df以格式化日期字符串see here
致@gillyspy非常优雅的一行日期调整!