- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看看你能不能帮我。我想获取两个日期 d1 和 d2 之间的周数(从星期一开始到星期日结束)。假设 d2 早于 d1。这部分代码已经编程并可以运行。我现在的问题是我无法正确编写周程序。这就是我现在所做的:
public static void getFullWeeks(Calendar d1, Calendar d2){
int Weeks = 0;
Calendar date2 = d2;
Calendar addWeek = GregorianCalendar.getInstance();
addWeek.setTime(date2.getTime());
addWeek.add(Calendar.DATE, 6);
while(addWeek.before(d1) || addWeek.equals(d1)){
if(date2.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY){
Weeks++;
}
date2.add(Calendar.DATE,1);
}
System.out.println(
"The number of weeks (from monday to sunday) between both dates are: "
+ Weeks);
}
但是输出是“0 周”,因此程序无法运行。怎么了?我没有遇到该错误,并且无法找到该问题的有效解决方案。
谢谢!!
最佳答案
在没有外部库的 Java 8 中,您可以执行如下操作:
*编辑以说明从周一开始的一周
// TechTrip - ASSUMPTION d1 is earlier than d2
// leave that for exercise
public static long getFullWeeks(Calendar d1, Calendar d2){
// In Java the week starts on Sunday from an integral perspective
// public final static int SUNDAY = 1;
// SEQUENTIAL UP TO
// public final static int SATURDAY = 7;
// make the starting date relative to the Monday we need to calculate from
int dayOfStartWeek = d1.get(Calendar.DAY_OF_WEEK);
// IF we have a partial week we should add an offset that moves the start
// date UP TO the next Monday to simulate a week starting on Monday
// eliminating partial weeks from the calculation
// NOTE THIS METHOD WILL RETURN NEGATIVES IF D1 < D2 after adjusting for
// offset
if (dayOfStartWeek == Calendar.SUNDAY) {
// add an offset of 1 day because this is a partial week
d1.add(Calendar.DAY_OF_WEEK, 1);
} else if (dayOfStartWeek != Calendar.MONDAY){
// add an offset for the partial week
// Hence subtract from 9 accounting for shift by 1
// and start at 1
// ex if WEDNESDAY we need to add 9-4 (WED Int Val) = 5 days
d1.add(Calendar.DAY_OF_WEEK, 9 - dayOfStartWeek);
}
Instant d1i = Instant.ofEpochMilli(d1.getTimeInMillis());
Instant d2i = Instant.ofEpochMilli(d2.getTimeInMillis());
LocalDateTime startDate = LocalDateTime.ofInstant(d1i, ZoneId.systemDefault());
LocalDateTime endDate = LocalDateTime.ofInstant(d2i, ZoneId.systemDefault());
return ChronoUnit.WEEKS.between(startDate, endDate);
}
主要内容如下:
public static void main(String[] args) {
Calendar d1 = Calendar.getInstance();
Calendar d2 = Calendar.getInstance();
d2.add(Calendar.WEEK_OF_YEAR, 6);
System.out.println(
"The number of weeks (from monday to sunday) between both dates are: "
+ getFullWeeks(d1, d2));
}
如果开始日期是星期一,则输出如下:
两个日期之间的周数(从星期一到星期日)为:6
注意,我没有将日期 d2 分配给 d1,使其成为相同的引用。在这种情况下,您将得到 0。
*ChronoUnit 采用 Temporal,它只是日期、时间或偏移量。它们必须是同一类型。时间可以用加号和减号来操纵。
关于java - 获取两个日期之间的完整 "monday to sunday"周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25923648/
我得到一个星期几的序列。我想做的 Python 代码: def week_days_to_string(week_days): """ >>> week_days_to_string(
我需要让我的 Access 查询始终返回本周的星期一。我在 Google/StackOverflow 上看到了一些解决方案,但它们是用 SQL 编写的,而且我是创建 Access 查询的初学者(我正在
Use Scilab answer the following questions:Paste both your function code, and console output demon
Use Scilab answer the following questions:Paste both your function code, and console output demon
编辑: 当我第一次发布这个问题时,我要求一个公式来解决一个条件,但后来意识到它实际上有两个条件。 给定一个特定的日期: 返回该月的第一个星期一,实际上可能是上个月的最后一个星期一。 (当实际的第一个星
我的输入文本框中有这个日期选择器,它在日期选择器和所选内容中也运行良好。我的问题是想要禁用过去的日期,并且仅禁用 future 选定的日期“星期一”。下面是我的代码 $(function() {
应该像这样的输出: 星期一 当日 天 天 y ÿ 我到目前为止所拥有的: #include using namespace std; int main () { char *weekDays[7]=
我有一个 Oracle SQL 查询,我正在尝试在 MySQL 中重写它。 PS:这里的日期是任意的,在实际场景中,我在 Tableau 中使用此自定义查询,它接受用户定义的日期。“引用开始日期”与“
我想做的是计算上周一的时间戳,但相对于其他日期。假设我给出日期 16-11-2011,我想取回日期 14-11-2011。 有没有办法不用硬编码就可以做到这一点? 最佳答案 使用 strtotime
这个问题已经有答案了: Get the number of weeks between two Dates. (19 个回答) 已关闭 8 年前。 看看你能不能帮我。我想获取两个日期 d1 和 d2
import java.time.LocalDate; import static java.time.DayOfWeek.*; public class Test { public stat
您好,我在让提示显示正确信息时遇到一些问题。现在它显示这个。 这里是一个示例: 我想删除出现在日期之前的短语“从星期一开始的一周”。我尝试更改图表选项中的工具提示对象参数,但没有帮助。这是图表选项现在
我想获取系统语言环境的星期日、星期一、星期二、星期三、星期四、星期五和星期六字符串。我有代码: Calendar cal = Calendar.getInstance(); cal.set(Calen
我想使用 strtotime("last Monday")。 问题是,如果今天是星期一,它会返回什么?它似乎正在返回上周星期一的日期。在这种情况下,我怎样才能让它返回今天的日期? 最佳答案 如果您阅读
我在 React 引导应用程序中使用 Monday.com API。 我可以使用项目名称成功创建一个新的看板项目... monday.api( `mutation { crea
我正在为 MS Excel 2007 新学习 VBA。我写了一个简单的循环来填补一周中缺失的几天,如下所示。因此,对于每一对连续的日子重复相同的行,只是更改了日期的名称(我在这里省略了除了两个之外的所
在 PostgreSQL 数据库中,我有一个表付款,其中的列 payment_date 类型为时间戳。我的目标是计算周一支付的款项。以下查询: SELECT TO_CHAR(payment_date,
echo date('Y-m-d', strtotime('First Monday '.date('F o', strtotime("-4 months"))); 以上代码返回 2012-10-08
echo date('Y-m-d', strtotime('First Monday '.date('F o', strtotime("-4 months"))); 以上代码返回 2012-10-08
我正在使用 Axios 将数据从 React 应用程序发布到 Monday API。 您可以在此处找到周一的开发页面: https://developers.monday.com/#!/boards/
我是一名优秀的程序员,十分优秀!