获得一个日期所在的周的星期几的日期

网络上找了个例子有bug,经过了修改就完善了======================================================

 /** *bug版 */

public static String getWeek(String sdate, String num) {
    // 再转换为时间
    Date dd = VeDate.strToDate(sdate);
    Calendar c = Calendar.getInstance();
    c.setTime(dd);
    if (num.equals("1")) // 返回星期一所在的日期
     c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    else if (num.equals("2")) // 返回星期二所在的日期
     c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
    else if (num.equals("3")) // 返回星期三所在的日期
     c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
    else if (num.equals("4")) // 返回星期四所在的日期
     c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
    else if (num.equals("5")) // 返回星期五所在的日期
     c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
    else if (num.equals("6")) // 返回星期六所在的日期
     c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
    else if (num.equals("0")) // 返回星期日所在的日期
     c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}======================================================

/** *获得一个日期所在的周的星期几的日期 *修正后版本 */

public static String getWeekdayBytime(String date_str,String num)
 {
 
    Calendar _c = Calendar.getInstance();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date _date =  formatter.parse(date_str,new ParsePosition(0));
    _c.setTime(_date);
    int dayofweek = _c.get(Calendar.DAY_OF_WEEK) - 1;
    if (dayofweek == 0)
     dayofweek = 7;
    if (num.equals("1")) // 返回星期一所在的日期
     _c.add(Calendar.DATE, -dayofweek + 1);
       else if (num.equals("2")) // 返回星期二所在的日期
        _c.add(Calendar.DATE, -dayofweek + 2);
       else if (num.equals("3")) // 返回星期三所在的日期
        _c.add(Calendar.DATE, -dayofweek + 3);
       else if (num.equals("4")) // 返回星期四所在的日期
        _c.add(Calendar.DATE, -dayofweek + 4);
       else if (num.equals("5")) // 返回星期五所在的日期
        _c.add(Calendar.DATE, -dayofweek + 5);
       else if (num.equals("6")) // 返回星期六所在的日期
        _c.add(Calendar.DATE, -dayofweek + 6);
       else if (num.equals("7")) // 返回星期日所在的日期
        _c.add(Calendar.DATE, -dayofweek + 7);
  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    return sdf.format(_c.getTime());
  
 }

### 回答1: 在 Java 中,可以使用 Calendar 类来获取本星期一的日期。首先,可以使用 Calendar 类的 getInstance() 静态方法来获取一个 Calendar 对象,然后设置这个 Calendar 对象的日期为本星期一。下面是一个示例代码: ``` Calendar c = Calendar.getInstance(); c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); ``` 然后,就可以使用 Calendar 对象的 getTime() 方法来获取一个表示本星期一的 Date 对象。下面是一个示例代码: ``` Date date = c.getTime(); ``` 最后,如果需要将本星期一的日期格式化为字符串,可以使用 SimpleDateFormat 类。下面是一个示例代码: ``` SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(date); ``` 希望这些信息能够帮助您。 ### 回答2: 要获取本星期一的日期,可以使用Java中的Calendar类来实现。下面是一个示例代码: ```java import java.util.Calendar; public class Main { public static void main(String[] args) { // 创建一个Calendar实例 Calendar calendar = Calendar.getInstance(); // 设置为本第一天(星期日) calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 增加1天,即为本星期calendar.add(Calendar.DATE, 1); // 获取本星期一的日期 int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); // 输出结果 System.out.println(year + "年" + month + "月" + day + "日"); } } ``` 运行以上代码,即可获取当前日期所在的本星期一的日期。例如,如果今天是2022年10月5日(星期三),那么输出结果将为2022年10月3日。 ### 回答3: 在Java中,可以使用`java.time`包中的`LocalDate`类来获取本星期一的日期。具体的步骤如下: 1. 首先,使用`LocalDate.now()`方法来获取当前日期。 2. 然后,使用`get`方法来获取当前日期星期几,例如`getDayOfWeek()`。 3. 接下来,使用`minus`方法来减去当前日期星期几与星期一之间的天数,例如`minusDays()`。 4. 最后,使用`with`方法将日期设置为星期一,例如`with(DayOfWeek.MONDAY)`。 下面是一个简单的示例代码: ```java import java.time.DayOfWeek; import java.time.LocalDate; public class Main { public static void main(String[] args) { LocalDate today = LocalDate.now(); int daysUntilMonday = today.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue(); LocalDate monday = today.minusDays(daysUntilMonday); System.out.println("本星期一的日期是:" + monday); } } ``` 运行该代码,将输出本星期一的日期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值