【问题标题】:Right way of getting dates for a current week [duplicate]获取本周日期的正确方法[重复]
【发布时间】:2018-01-15 18:58:51
【问题描述】:

我有一个方法应该将本周的所有日期放入数组中。 下面是它的样子:

private void initWeek()
    {
        Calendar calendar = Calendar.getInstance();
        week_dates = new String[7];

        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

        for (int i = 0; i < 7; i++)
        {
            week_dates[i] = dateFormat.format(calendar.getTime());
            calendar.set(Calendar.DAY_OF_WEEK, i);

        }
    }

但是当今天是星期天时,它会给出下一周的日期,而不是星期天之前的日期。

【问题讨论】:

  • 你的意思是所有日期都是7天后?
  • @Javad,是的,当天是星期日。但在其他任何一天都可以。
  • 您正在使用麻烦的旧类,现在已被 java.time 类取代。

标签: java android date calendar dayofweek


【解决方案1】:

这就是我想出的: 编辑:尝试添加 Calendar.DATE

private void initWeek()
{
    Calendar calendar = Calendar.getInstance();
    week_dates = new String[7];

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);

    for (int i = 0; i < 7; i++)
    {
        week_dates[i] = dateFormat.format(calendar.getTime());
        calendar.add(Calendar.DATE, 1);

    }
}

【讨论】:

  • 不起作用,给出每天的这些日期gist.github.com/Twinkle942910/4e72f11c434f7b825ad8650cb640caaa
  • 这很有趣,也许您正在应用程序的其他地方更改日历?导致它对我来说工作正常
  • 不,只有这个方法
  • 编辑后输出是一样的
  • 在格式化之前检查日历是否返回正确的日期,还要仔细检查您的时间设置是否有问题。
【解决方案2】:
for (int i = 0; i < 7; i++)
{
  week_dates[i] = dateFormat.format(calendar.getTime());
  //calendar.set(Calendar.DAY_OF_WEEK, i);
  calendar.add(Calendar.DATE, 1);
}

使用Calendar.DATE,从您在元素 0 中分配的星期一开始增加 1 天。

我已经评论了您的原始代码并替换了该行。原始行不断更改初始选定的当前日期。

【讨论】:

  • 它可以工作,但仍然不是我想要的。我在手机设置中选择了周日(06/08),代码给了我几天的输出:gist.github.com/Twinkle942910/8f46667a2a506b5b0d4b3bdbd8cfaef5周日之后。而我想要的是这个星期天(当前周)之前的所有日子。
  • 实际上,经过测试,我意识到它可以正常工作。很好的解决方案)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
相关资源
最近更新 更多