获取某一年指定自然周的开始时间和结束时间

获取某一年指定自然周的开始时间和结束时间

package com.playmath.playmathcrm.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * Created by gailun on 2018/8/11.
 */
public class WeekUtils {
    public static void main(String[] args) throws ParseException {

        WeekUtils cd = new WeekUtils();
        System.out.println("开始时间: " + cd.getStartDayOfWeekNo(2018,32) );
        System.out.println("结束时间:" + cd.getEndDayOfWeekNo(2018,32) );
        String startDayOfWeekNo = cd.getStartDayOfWeekNo(2018, 32);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(sdf.parse(startDayOfWeekNo));
        System.out.println(sdf.format(sdf.parse(startDayOfWeekNo)));

    }

    /**
     * get first date of given month and year
     * @param year
     * @param month
     * @return
     */
    public static String getFirstDayOfMonth(int year,int month){
        String monthStr = month < 10 ? "0" + month : String.valueOf(month);
        return year + "-"+monthStr+"-" +"01";
    }

    /**
     * get the last date of given month and year
     * @param year
     * @param month
     * @return
     */
    public static String getLastDayOfMonth(int year,int month){
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR , year);
        calendar.set(Calendar.MONTH , month - 1);
        calendar.set(Calendar.DATE , 1);
        calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.DAY_OF_YEAR , -1);
        return calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" +
                calendar.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * get Calendar of given year
     * @param year
     * @return
     */
    private static Calendar getCalendarFormYear(int year){
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        cal.set(Calendar.YEAR, year);
        return cal;
    }

    /**
     * get start date of given week no of a year
     * @param year
     * @param weekNo
     * @return
     */
    public static String getStartDayOfWeekNo(int year,int weekNo){
        Calendar cal = getCalendarFormYear(year);
        cal.set(Calendar.WEEK_OF_YEAR, weekNo);
        return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +
                cal.get(Calendar.DAY_OF_MONTH);

    }

    /**
     * get the end day of given week no of a year.
     * @param year
     * @param weekNo
     * @return
     */
    public static String getEndDayOfWeekNo(int year,int weekNo){
        Calendar cal = getCalendarFormYear(year);
        cal.set(Calendar.WEEK_OF_YEAR, weekNo);
        cal.add(Calendar.DAY_OF_WEEK, 6);
        return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +
                cal.get(Calendar.DAY_OF_MONTH);
    }


}

执行结果:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用datetime模块来获取当前季度的开始时间结束时间,具体实现如下: ```python import datetime # 获取当前日期 today = datetime.date.today() # 计算当前季度的开始时间 quarter_start_month = (today.month - 1) // 3 * 3 + 1 quarter_start_date = datetime.date(today.year, quarter_start_month, 1) # 计算当前季度的结束时间 quarter_end_month = quarter_start_month + 2 last_day_of_quarter = datetime.date(today.year, quarter_end_month, 1) - datetime.timedelta(days=1) quarter_end_date = last_day_of_quarter print("当前季度的开始时间:", quarter_start_date) print("当前季度的结束时间:", quarter_end_date) ``` 运行以上代码,可以得到当前季度的开始时间结束时间。例如,如果今天是2022年7月1日,那么输出结果如下: ``` 当前季度的开始时间: 2022-07-01 当前季度的结束时间: 2022-09-30 ``` 注意,上述代码中计算季度的方式是按照1-3月为第一季度,4-6月为第二季度,7-9月为第三季度,10-12月为第四季度。如果需要按照其他方式计算季度,可以根据具体情况修改代码。 ### 回答2: 要获取当前季度的开始时间结束时间,可以使用Python的datetime模块来实现。 首先,我们需要导入datetime模块: ```python import datetime ``` 接下来,我们可以使用datetime模块中的now()函数获取当前日期时间: ```python current_date = datetime.datetime.now() ``` 然后,我们可以使用当前日期的月份来计算当前季度的开始时间结束时间。假设我们采用季度计算如下: - 第一季度:1月1日至3月31日 - 第二季度:4月1日至6月30日 - 第三季度:7月1日至9月30日 - 第四季度:10月1日至12月31日 我们可以按照上述定义来计算当前季度的开始时间结束时间: ```python quarter_start = datetime.datetime(current_date.year, 3 * ((current_date.month - 1) // 3) + 1, 1) quarter_end = quarter_start + datetime.timedelta(days=89) ``` 在上述代码中,我们首先计算季度的开始月份,即`3 * ((current_date.month - 1) // 3) + 1`。然后,我们使用datetime.datetime函数传入年份、月份和日期来构造开始时间:`datetime.datetime(current_date.year, 3 * ((current_date.month - 1) // 3) + 1, 1)`。 接着,我们使用timedelta函数来计算结束时间,根据季度开始时间的基础上加上89天:`quarter_start + datetime.timedelta(days=89)`。 最后,我们可以打印出当前季度的开始时间结束时间: ```python print("当前季度的开始时间:", quarter_start) print("当前季度的结束时间:", quarter_end) ``` 这样就可以获取当前季度的开始时间结束时间了。 完整代码如下: ```python import datetime current_date = datetime.datetime.now() quarter_start = datetime.datetime(current_date.year, 3 * ((current_date.month - 1) // 3) + 1, 1) quarter_end = quarter_start + datetime.timedelta(days=89) print("当前季度的开始时间:", quarter_start) print("当前季度的结束时间:", quarter_end) ``` 注意:上述代码中,我们假设了一年恰好有365天,没有考虑闰年的情况。在实际应用中,需要根据具体需求进行适当的修改。 ### 回答3: 要获取当前季度的开始时间结束时间,我们可以使用Python的datetime库来操作日期和时间。以下是一种实现方法: 首先,我们需要导入datetime和calendar模块: ``` import datetime import calendar ``` 然后,我们可以使用datetime.now()函数来获取当前日期和时间: ``` current_date = datetime.datetime.now() ``` 接下来,我们可以使用current_date的month属性来获取当前月份: ``` current_month = current_date.month ``` 然后,我们可以使用当前月份来计算当前季度的开始月份和结束月份: ``` start_month = (current_month - 1) // 3 * 3 + 1 end_month = start_month + 2 ``` 接着,我们可以使用calendar.monthrange()函数来获取指定月份的天数: ``` start_day = 1 end_day = calendar.monthrange(current_date.year, end_month)[1] ``` 最后,我们可以使用datetime.datetime()函数来构造当前季度的开始时间结束时间: ``` start_date = datetime.datetime(current_date.year, start_month, start_day) end_date = datetime.datetime(current_date.year, end_month, end_day) ``` 现在,start_date和end_date分别是当前季度的开始时间结束时间。你可以根据需要对其进行进一步处理或打印输出。 注意:以上方法假设当前日期是以公历计算的。如需在其他历法中计算,请使用适当的模块和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值