如何获得给定字符串日期的一周中的天数

时间:2019-06-21 08:56:51

标签: android

我有一个字符串是 String dateOfOrder = "01/06/2019";

我想获得第1周的天数,因为6月的第一周只有1天。

我可以知道如何减少X周的天数吗?

  

就像2019年6月那样

     

第1周:有1天;第2-5周:有7天;第6周:有1天

编辑

我正在考虑这种方法来获取一周中的天数,因此我有几个String arrayList。例如,在上面给定的日期,如果第1周有星期六。第1周数组列表将在其中添加星期六和.size()。 如果第2周有星期日至星期六,它将在第2周数组列表和.size()中添加所有日期,以获取ArrayList中的天数。 最后,6月的最后一周(第6周)将只有星期天,它将添加到第6周的ArrayList中,并且仅具有Sunday的值和.size()来获得1。

我想知道它是否是最好的方法,并且不确定是否可以在一周中得到正确的日子。

1 个答案:

答案 0 :(得分:2)

使用var ids = new ConcurrentBag<string>(); var apiKey = ctx.ApiKey.FirstOrDefault(); // Assume the key hasn't expired - don't set to false within the loops bool expired = false; Parallel.ForEach(ids.Skip(1), id => { try { // Perform API calls } catch (Exception e) { if (e.Message == "Expired") { // Doesn't matter if many threads set this to true. expired = true; } } if (expired) { // Log to database once. } } 将字符串解析为日期。您的解析模式可能是SimpleDateFormatter

dd/MM/YYYY

确定日期后,请使用DateFormat df = new SimpleDateFormat("dd/MM/YYYY"); Date date = df.parse(dateOfOrder); 获取星期几。

Calendar

计算给定星期(和月份)中的天数。

 Calendar c = Calendar.getInstance();
 c.setTime(yourDate);
 int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
 int dayOfMonth = c.get(Calendar.DAY_OF_MONTH);

注意:条件有点粗糙,您可能需要添加int daysInMonth = c.getActualMaximum(Calendar.DAY_OF_MONTH); int currentMonth = c.get(Calendar.MONTH); int prevWeekMonth = c.add(Calendar.DAY_OF_MONTH, -7).get(Calendar.MONTH); c.setTime(yourDate); int nextWeekMonth = c.add(Calendar.DAY_OF_MONTH, 7).get(Calendar.MONTH); c.setTime(yourDate); if (prevWeekMonth != currentMonth) { // first or second week if (dayOfMonth > dayOfWeek) { // second week numOfDaysInWeek = 7; } else { // first week int firstDay = c.set(Calendar.DAY_OF_MONTH, 1).get(Calendar.DAY_OF_WEEK); numOfDaysInWeek = 7 - firstDay; } } else if (nextWeekMonth != currentMonth) { // last or second last week if (dayOfMonth - dayOfWeek + 7 >= daysInMonth) { // last week numOfDaysInWeek = c.set(Calendar.DAY_OF_MONTH, daysInMonth).get(Calendar.DAY_OF_WEEK); } else { // second last week numOfDaysInWeek = 7; } } else { // middle weeks numOfDaysInWeek = 7; } ,具体取决于dayOfWeek,dayOfMonth是0还是1索引。