我需要使用日历来实现这个方法,基本上我得到了一周中的具体日期(1,2,3),每个int代表一周中的一天(周一,周二),不是按这个顺序,但逻辑是这样的。
我需要的是获取一周中第二天的日期,假设今天是周一,用户选择Wednesday,我需要获取下周三的日期。
目前我的逻辑是:
calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
dateMatch = calendar.getTime();
day of week是从slidePicker传递过来的,代表一周中的特定日期,如果我把Wednesday放在他给我的6上,那么这一天就不起作用了
今天之后的下一个星期三,如果已经是星期三,就坚持今天的日期。
LocalDate.now( ZoneId.of( "Africa/Tunis" ) )
.with( TemporalAdjusters.nextOrSame( DayOfWeek.WEDNESDAY ) )
使用现代java.time类取代了麻烦的旧旧日期时间类,例如Calendar
。
使用DayOfWeek
enum对象来表示星期一和星期天。使用智能对象而不是哑整数来表示一周中的某一天。使代码更加自文档化,确保有效值,并提供类型安全。
LocalDate
类表示一个只包含日期的值,不包含一天中的时间和时区。
时区对确定日期至关重要。在任何一个特定的时刻,世界各地的日期因地区而异。例如,法国巴黎午夜过后几分钟是新的一天,而魁北克山仍然是“昨天”。
如果未指定时区,JVM将隐式应用其当前默认时区。默认值可能随时发生变化,因此结果可能会有所不同。最好将所需/预期时区明确指定为参数。
以大陆/地区
的格式指定适当的时区名称,例如美国/蒙特利尔
,非洲/卡萨布兰卡
,或太平洋/奥克兰
。切勿使用3-4个字母的缩写,例如EST
或IST
,因为它们不是真正的时区,不标准化,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;
使用TemporalAdouner
实现,例如TemporalAdjusters.nextOr同类
移动到另一个日期。
TemporalAdjuster ta = TemporalAdjusters.nextOrSame( DayOfWeek.WEDNESDAY ) ;
LocalDate nextOrSameWednesday = today.with( ta ) ;
如果使用“时刻”,请使用ZonedDateTime
类,而不是糟糕的日历
类。如上所述的一些想法,让临时调节器
完成繁重的工作。但请记住,如果一天中的时间对新日期无效,例如在夏时制(DST)转换期间,则一天中的时间可能会被更改。
ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
TemporalAdjuster ta = TemporalAdjusters.nextOrSame( DayOfWeek.WEDNESDAY ) ;
ZonedDateTime zdtSameOrNextWednesday = zdt.with( ta ) ;
java.time框架内置在Java8及更高版本中。这些类取代了麻烦的旧的遗留日期-时间类,例如java.util.Date
,Calendar
,
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。并在Stack Overflow中搜索许多示例和解释。规范是JSR 310。
您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,不需要java.sql.*
类。
从哪里获得java.time课程?
额外的Three Ten项目扩展了java。有额外课程的时间。这个项目是java未来可能增加的一个试验场。时间你可以在这里找到一些有用的类,比如Interval
,YearWeek
,YearQuarter
,等等。
虽然您的问题文本只说要查找下一个dayOfWeek
,但您的代码还包括一天中的时间,形式为小时
和分钟
。
假设你希望将来第一次出现这种组合,即dayOfWeek
、hour
和minute
,这意味着如果今天是dayOfWeek
,如果一天的时间晚于现在,你要么想要今天;如果一天的时间早于现在,你想要下周。
你可以这样做:
int dayOfWeek = Calendar.WEDNESDAY;
int hour = 10; // 10 AM
int minute = 0;
Calendar cal = Calendar.getInstance(); // Today, now
if (cal.get(Calendar.DAY_OF_WEEK) != dayOfWeek) {
cal.add(Calendar.DAY_OF_MONTH, (dayOfWeek + 7 - cal.get(Calendar.DAY_OF_WEEK)) % 7);
} else {
int minOfDay = cal.get(Calendar.HOUR_OF_DAY) * 60 + cal.get(Calendar.MINUTE);
if (minOfDay >= hour * 60 + minute)
cal.add(Calendar.DAY_OF_MONTH, 7); // Bump to next week
}
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
System.out.println(cal.getTime()); // Prints: Wed May 10 10:00:00 EDT 2017
本文向大家介绍js获取指定日期周数以及星期几的小例子,包括了js获取指定日期周数以及星期几的小例子的使用技巧和注意事项,需要的朋友参考一下 JS获取日期时遇到如下需求,根据某年某周获取一周的日期。如开始日期规定为星期四到下一周的星期五为一周。 代码如下: 如获取2016年第一周日期,从周四开始算。则第一周的日期范围为2016-01-07 至 2016-01-15 在提供一段调用的参考代码:
问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时
问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。
问题内容: 例如,我的日期为:“ 23/2/2019”(2019年2月23日)。我想将其传递给将返回星期几的函数。我怎样才能做到这一点? 在此示例中,该函数应返回 “ Tue”。 另外,如果只需要按日排序,那么如何检索呢? 问题答案: 是。根据你的具体情况: 你可以使用: 如果你需要的输出为Tue,而不是3(被索引从1开始的每周星期天天,见Calendar.SUNDAY),而不是通过日历打算,只是
问题内容: 我需要输出从当前日期开始的未来12个月的日期列表(仅星期一和星期二),如下所示: 2010年1月 星期二2010年1月12日 星期一2010 年1月18日 星期二2010 年1月19日 星期一2010 年1月25 日星期一2010年 2月2日 星期二2010 年2月8日 星期一2010年2月9日星期二2010 年 2月 15 日星期一2010年2月15日 星期二2010 年2月16日
问题内容: 因此,对于一个开始日期和结束日期,我想确定在这两个日期之间发生的一周中的特定天数。 那么多少个星期一,星期二等 我知道我可以在“开始日期”和“结束日期”之间循环并每天检查一次,但是可能相差很多天。我更喜欢不需要循环的东西。有任何想法吗?(必须在SQL Server2005+中受支持) 问题答案: 鉴于我 认为 您正在尝试获得的结果,应该这样做: