
/
获取上周五时间
/
public Date lastFirday() {
//作用防止周日得到本周日期
Calendar calendar = CalendargetInstance();
while (calendarget(CalendarDAY_OF_WEEK) != CalendarMONDAY) {
calendaradd(CalendarDAY_OF_WEEK, -1);
}
int dayOfWeek = calendarget(CalendarDAY_OF_WEEK) - 1;
int offset = 7 - dayOfWeek;
calendaradd(CalendarDATE, offset - 9);
return DateTimeUtilgetFirstDayOfWeek(calendargetTime(), 6);//这是从上周日开始数的到本周五为6
}
/
获取上周一时间
/
public Date lastMonday() {
Calendar calendar = CalendargetInstance();
while (calendarget(CalendarDAY_OF_WEEK) != CalendarMONDAY) {
calendaradd(CalendarDAY_OF_WEEK, -1);
}
int dayOfWeek = calendarget(CalendarDAY_OF_WEEK) - 1;
int offset = 1 - dayOfWeek;
calendaradd(CalendarDATE, offset - 7);
return DateTimeUtilgetFirstDayOfWeek(calendargetTime(), 2);
}
参考
请采纳,谢谢
下面是一个简单的 Java 程序示例,用于打印指定时间段内每个日期是星期几:
```java
import javatimeDayOfWeek;
import javatimeLocalDate;
public class BirthdayPrint {
public static void main(String[] args) {
int startYear = 2022; // 开始年份
int endYear = 2025; // 结束年份
for (int year = startYear; year <= endYear; year++) {
for (int month = 1; month <= 12; month++) {
for (int day = 1; day <= 31; day++) { // 最大值为 31,超出月份天数的部分会自动忽略
try {
LocalDate date = LocalDateof(year, month, day);
DayOfWeek dow = dategetDayOfWeek();
Systemoutprintln(date + " is " + dow);
} catch (Exception e) { // 如果日期非法,则会抛出异常,这里捕获并忽略即可
}
}
}
}
}
}
```
此程序使用 Java 8 中的 `LocalDate` 类和 `DayOfWeek` 枚举类型,循环遍历指定时间范围内的所有日期,并通过 `getDayOfWeek()` 方法获取每个日期对应的星期几。最后将所有结果输出到控制台。
需要注意的是,在本程序中,我们没有做任何错误处理,例如输入的起始和结束年份必须合法、超出日期范围的日期会被自动忽略等等情况需要根据实际需求进行适当处理。
package date;
import javatextSimpleDateFormat;
import javautilCalendar;
public class Select {
public static void main(String[] args) throws Exception {
String startDate = "2016年1月1日";
String endDate = "2019年12月31日";
SimpleDateFormat spf = new SimpleDateFormat("yyyy年MM月dd日");
Calendar start = CalendargetInstance();
startsetTime(spfparse(startDate));
Calendar end = CalendargetInstance();
endsetTime(spfparse(endDate));
String pattern = "yyyy年MM月dd日EEE";
spfapplyPattern(pattern);
while(startbefore(end)) {
if (startget(CalendarWEEK_OF_MONTH) == 1 ) {
if (startget(CalendarDAY_OF_WEEK) == CalendarWEDNESDAY) {
Systemoutprintln(spfformat(startgetTime()));
}
if (startget(CalendarDAY_OF_WEEK) == CalendarTHURSDAY) {
Systemoutprintln(spfformat(startgetTime()));
}
}
if (startget(CalendarWEEK_OF_MONTH) == 3 ) {
if (startget(CalendarDAY_OF_WEEK) == CalendarTUESDAY) {
Systemoutprintln(spfformat(startgetTime()));
}
if (startget(CalendarDAY_OF_WEEK) == CalendarFRIDAY) {
Systemoutprintln(spfformat(startgetTime()));
}
}
startadd(CalendarDAY_OF_MONTH, 1);
}
}
}
我的理解是如果输入的星期等于当前日期的星期数,那么返回下一个周对应星期数的日期,否则返回当前日期往后最近的一个匹配的星期数的日期。如果我的理解没问题的话下面代码就能满足你的要求:
import javautilCalendar;import javautilDate;
public class Main {
public static void main(String[] args) {
Systemoutprintln(getDateByWeek(2));
}
/
根据星期获取日期
@param week 星期几 1代码星期日,2代表星期一。。。7代表星期六
@return
/
public static Date getDateByWeek(int week) {
int targetWeek = week;
Calendar c = CalendargetInstance();
// 当前日期星期数
int currWeek = cget(CalendarDAY_OF_WEEK);
if (currWeek == targetWeek) {
// 如果所给星期数和当前日期星期数相等则向后推7天
cadd(CalendarDAY_OF_MONTH, 7);
return cgetTime();
}
do {
// 向后推一天,直到星期数与所给星期数相同
cadd(CalendarDAY_OF_MONTH, 1);
} while (targetWeek != cget(CalendarDAY_OF_WEEK));
return cgetTime();
}
}
public static void main(String[] args) {
Calendar cal=CalendargetInstance();
Systemoutprintln(calgetTime());
Systemoutprintln(calget(CalendarDAY_OF_WEEK));
}
返回值是
Mon Sep 24 11:02:28 CST 2007
2
它是从星期天开始算第一天
//一个简单的日期计算程序
import javautil;
import javatext;
public class DateCalculator
{
Date standardDate;
DateFormat mf = new SimpleDateFormat( "yyyyMMdd ");
Calendar cal = CalendargetInstance();
Calendar cal_temp = CalendargetInstance();
public DateCalculator()
{
try{
standardDate = mfparse( "20000101 ");
}
catch(ParseException ep){
epprintStackTrace();
}
}
//设置基本日期,使用 "yyyyMMdd "格式的字符串
public boolean setStandardDate(String str)
{
Date date;
try{
date = mfparse(str);
}
catch(ParseException ep){
epprintStackTrace();
return false;
}
standardDate = date;
return true;
}
public boolean setStandardDate(Date date)
{
standardDate = getOnlyDate(date);
return true;
}
//year 为年数
//month 为月份,以 0 开始,与系统的不同,取值 0-11
//为的是与Java的内部使用兼容
//day 为日期天数
public boolean setStandardDate(int year,int month,int day)
{
calclear();
calset(year,month,day);
standardDate = calgetTime();
return true;
}
public boolean setStandardDate(long time)
{
standardDate = getOnlyDate(time);
return true;
}
public Date getStandardDate()
{
return standardDate;
}
//取得一个只有日期,不含有时间的日期,也就是时间是 0时 0分 0秒
public Date getOnlyDate(Date date)
{
calsetTime(date);
cal_tempclear();
cal_tempset(calget(CalendarYEAR),calget(CalendarMONTH),calget(CalendarDAY_OF_MONTH));
return cal_tempgetTime();
}
public Date getOnlyDate(long time)
{
calsetTimeInMillis(time);
cal_tempclear();
cal_tempset(calget(CalendarYEAR),calget(CalendarMONTH),calget(CalendarDAY_OF_MONTH));
return cal_tempgetTime();
}
//使用一个字符串取得一个日期,样式 "yyyyMMdd "格式的字符串
public Date getDate(String str)
{
Date date;
try{
date = mfparse(str);
}
catch(ParseException ep){
epprintStackTrace();
return getOnlyDate(new Date());
}
return date;
}
//使用输入的日期减去标准日期,得到相差的天数
public int sub(Date date)
{
long temp = dategetTime()-standardDategetTime();
if(temp> 0)
{
return (int)(temp/(2460601000));
}
else
{
return (int)(temp/(2460601000))-1;
}
}
//使用 b_date - j_date 得到相差的天数
public int sub(Date b_date , Date j_date)
{
Date date = getOnlyDate(j_date);
long temp = b_dategetTime()-dategetTime();
if(temp> 0)
{
return (int)(temp/(2460601000));
}
else
{
return (int)(temp/(2460601000))-1;
}
}
//得到标准日期减去几天后的日期
public Date add(int day)
{
calsetTime(standardDate);
caladd(CalendarDATE,day);
return calgetTime();
}
//得到 date 减去几天后的日期
public Date add(Date date , int day)
{
calsetTime(date);
caladd(CalendarDATE,day);
return calgetTime();
}
public static void main(String args[])
{
DateCalculator temp = new DateCalculator();
Date d = tempgetDate( "20030101 ");
int i = tempsub(new Date(),d);
Systemoutprintln (i);
}
}
以上就是关于java怎么获取本周一到周末时间全部的内容,包括:java怎么获取本周一到周末时间、java编程打印大学四年的生日都是星期几、Java编程输出2016年1月1日到2019年12月31日期间的每个月的第一个星期的星期三和星期四等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)