Java 上周日期自日期()
目标:我想使用Date()将接下来12周的一周的最后一天(星期日)分成单独的字符串 我有下面这给我正确的日期格式。我只是需要关于实现我的目标的最佳解决方案的建议Java 上周日期自日期(),java,date,Java,Date,目标:我想使用Date()将接下来12周的一周的最后一天(星期日)分成单独的字符串 我有下面这给我正确的日期格式。我只是需要关于实现我的目标的最佳解决方案的建议 DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); Date date = new Date(0); System.out.println(dateFormat.format(date)); Java的日期系统让我感到困惑,但我认为您希望这样
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date = new Date(0);
System.out.println(dateFormat.format(date));
Java的日期系统让我感到困惑,但我认为您希望这样做: 1) 与其约会,不如做一个格雷戈里安日历 2) Calendar.set(Calendar.DAY\u OF_WEEK,Calendar.SUNDAY)获取本周星期日的日期
3) 在for循环中,将7天添加到日历中12次。在每个循环中执行一些操作(例如,使用getTime()从GregorianCalendar获取日期)Java的日期系统让我感到困惑,但我认为您希望这样做: 1) 与其约会,不如做一个格雷戈里安日历 2) Calendar.set(Calendar.DAY\u OF_WEEK,Calendar.SUNDAY)获取本周星期日的日期 3) 在for循环中,将7天添加到日历中12次。对每个循环执行一些操作(例如,使用getTime()从GregorianCalendar获取日期)尝试
GregorianCalendar c = new GregorianCalendar();
for (int i = 0; i < 12;) {
c.add(Calendar.DATE, 1);
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
System.out.println(DateFormat.getDateInstance().format(c.getTime()));
i++;
}
}
GregorianCalendar c=新的GregorianCalendar();
对于(int i=0;i<12;){
c、 添加(日历日期,1);
如果(c.get(日历.星期日)=日历.星期日){
System.out.println(DateFormat.getDateInstance().format(c.getTime());
i++;
}
}
试试看
GregorianCalendar c=新的GregorianCalendar();
对于(int i=0;i<12;){
c、 添加(日历日期,1);
如果(c.get(日历.星期日)=日历.星期日){
System.out.println(DateFormat.getDateInstance().format(c.getTime());
i++;
}
}
首先,一周的最后一天并不总是与星期天相同,因为它取决于您使用的区域设置
如果您使用的是Java 8,那么解决方案非常简单:
LocalDate firstJanuary = LocalDate.parse("01/01/2015",
DateTimeFormatter.ofPattern("MM/dd/yyyy"));
//last day of the week
TemporalField fieldUS = WeekFields.of(Locale.US).dayOfWeek();
LocalDate lastDayOfWeek = firstJanuary.with(fieldUS,7);
System.out.println(lastDayOfWeek);
//sunday
LocalDate sunday = firstJanuary.with(DayOfWeek.SUNDAY);
System.out.println(sunday);
要重复到几周后,只需使用:
sunday.plusWeeks(1);
首先,一周的最后一天并不总是与星期天相同,因为它取决于您使用的区域设置 如果您使用的是Java 8,那么解决方案非常简单:
LocalDate firstJanuary = LocalDate.parse("01/01/2015",
DateTimeFormatter.ofPattern("MM/dd/yyyy"));
//last day of the week
TemporalField fieldUS = WeekFields.of(Locale.US).dayOfWeek();
LocalDate lastDayOfWeek = firstJanuary.with(fieldUS,7);
System.out.println(lastDayOfWeek);
//sunday
LocalDate sunday = firstJanuary.with(DayOfWeek.SUNDAY);
System.out.println(sunday);
要重复到几周后,只需使用:
sunday.plusWeeks(1);
tl;博士
java.time
现代方法使用java.time类
今天
时区对于确定日期至关重要。在任何一个特定的时刻,世界各地的日期都因地区而异。例如,中午夜后几分钟是新的一天,而中仍然是“昨天”
以大陆/地区
的格式指定,例如,或太平洋/奥克兰
。切勿使用3-4个字母的伪时区,如EST
或IST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)
该类表示一个仅限日期的值,不包含一天中的时间和时区
LocalDate today = LocalDate.now( z );
星期几
要查找今天当天或之后的下一个星期日,请使用类中的实现
收集
收集一打这样连续的日期
int countWeeks = 12 ;
List< LocalDate > sundays = new ArrayList<>( 12 ) ;
for( int i = 0 , i < countWeeks , i ++ ) {
sundays.add( nextOrSameSunday.plusWeeks( i ) ) ; // + 0, + 1, + 2, … , + 11.
}
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- ,及以后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
大陆/地区
的格式指定,例如,或太平洋/奥克兰
。切勿使用3-4个字母的伪时区,如EST
或IST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)
该类表示一个仅限日期的值,不包含一天中的时间和时区
LocalDate today = LocalDate.now( z );
星期几
要查找今天当天或之后的下一个星期日,请使用类中的实现
收集
收集一打这样连续的日期
int countWeeks = 12 ;
List< LocalDate > sundays = new ArrayList<>( 12 ) ;
for( int i = 0 , i < countWeeks , i ++ ) {
sundays.add( nextOrSameSunday.plusWeeks( i ) ) ; // + 0, + 1, + 2, … , + 11.
}
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- ,及以后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。@Todd您的答案出了什么问题。这正是我要找的。仅供参考,托德删除了。无论如何,这个答案现在已经过时了。现在使用java.time类更容易了。“看,”托德说