在android中获得最后的星期四todate

时间:2013-05-13 15:32:51

标签: android date datetime

大家好,希望你们好, 如果你有任何可以提供帮助的想法,那么问题就是我完全被困住了吗?

在我的应用中,我可以获得如下的当前日期和时间。但我需要的是上周四的日期刚刚过去,但不知道该怎么做?

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);

提前感谢任何建议。 吨。

4 个答案:

答案 0 :(得分:3)

不是特定于Android的,但通常是

  • R是今天的日期
  • Rd是今天(R)的一周中的天数
  • X是星期数(星期四为5 - 或者是4?)
  • L是最大日期数(7或6,取决于索引)

然后上周四(今天不包括今天是星期四)是:

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非常优雅的一行日期调整!