0

大家好,希望你们一切都好,有一个我完全坚持的问题,如果你有任何可以帮助的想法吗?

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

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

提前感谢您的任何建议。T。

4

4 回答 4

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 )
         ); 
于 2013-05-13T15:46:37.463 回答
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.
于 2013-05-13T15:53:54.250 回答
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);
于 2013-05-13T15:56:17.813 回答
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 以格式化日期字符串,如您所见,请参见此处

感谢@gillyspy 非常优雅的一行日期调整!

于 2013-05-13T16:14:01.190 回答