GVKun编程网logo

js 获取自然周 / 自然月 / 自然日开始结束时间戳(js获取当前自然周)

9

如果您对js获取自然周/自然月/自然日开始结束时间戳感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于js获取自然周/自然月/自然日开始结束时间戳的详细内容,我们还将为您解答j

如果您对js 获取自然周 / 自然月 / 自然日开始结束时间戳感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于js 获取自然周 / 自然月 / 自然日开始结束时间戳的详细内容,我们还将为您解答js获取当前自然周的相关问题,并且为您提供关于ASP.NET 获取自然周、自然月等时间段、C# 自然周,月,季度计算。、iView 开始结束时间组件、java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期的有价值信息。

本文目录一览:

js 获取自然周 / 自然月 / 自然日开始结束时间戳(js获取当前自然周)

js 获取自然周 / 自然月 / 自然日开始结束时间戳(js获取当前自然周)

JavaScript 封装获取自然周、自然月、自然日、开始结束时间戳


/**
 * 获取自然月开始结束时间
 * @param {*} year 
 * @param {*} month 
 */
function getMonthBeginEnd(year, month) {
    if (~~year === 0 || ~~month === 0) {
        throw new Error(''年月参数错误'');
    }

    const result = {begin: 0, end: 0};
    const target = new Date();
    target.setFullYear(year);
    target.setMonth(month - 1);
    target.setDate(1);
    target.setHours(0);
    target.setMinutes(0);
    target.setSeconds(0);
    target.setMilliseconds(0);
    result.begin = target.getTime();

    const now = new Date();
    if (target.getFullYear() + target.getMonth() >= now.getFullYear() + now.getMonth()) {
        result.end = now.getTime();
        console.log(result);
        console.log(new Date(result.begin), new Date(result.end));
        return result;
    }

    target.setMonth(month);//当月的下个月1日 0时0分0秒
    target.setSeconds(-1);//前1秒,即昨天最后1秒钟,也就是上个月的最后一秒钟
    result.end = target.getTime();

    console.log(result);
    console.log(new Date(result.begin), new Date(result.end));
    return result;
}
/**
 * 获取自然日开始结束时间
 * @param {*} year 
 * @param {*} month 
 * @param {*} date 
 */
function getDateBeginEnd(year, month, date) {
    if (~~year === 0 || ~~month === 0 || ~~date === 0) {
        throw new Error(''年月日参数错误'');
    }

    const result = {begin: 0, end: 0};
    const target = new Date();
    target.setFullYear(year);
    target.setMonth(month - 1);
    target.setDate(date);
    target.setHours(0);
    target.setMinutes(0);
    target.setSeconds(0);
    target.setMilliseconds(0);
    result.begin = target.getTime();
    const targetDateCount = target.getFullYear() + target.getMonth() + target.getDate();

    const now = new Date();
    const nowDateCount = now.getFullYear() + now.getMonth() + now.getDate();
    if (targetDateCount >= nowDateCount) {
        result.end = now.getTime();
        console.log(0, result);
        console.log(new Date(result.begin), new Date(result.end));
        return result;
    }

    target.setDate(target.getDate() + 1);//次日0时0分0秒
    target.setSeconds(-1);//前1秒,即当日最后1秒钟
    result.end = target.getTime();

    console.log(1, result);
    console.log(new Date(result.begin), new Date(result.end));
    return result;
}

/**
 * 获取自然周开始结束时间
 * @param {*} year 
 * @param {*} month 
 * @param {*} number 第几周
 */
function getWeekByMonth(year, month, number) {
    const weekCount = getWeekCountInMonth(year, month);
    const result = {begin: 0, end: 0, list: weekCount};
    const target = new Date();
    target.setFullYear(year);
    target.setMonth(month - 1);
    target.setDate(1);
    target.setHours(0);
    target.setMinutes(0);
    target.setSeconds(0);
    target.setMilliseconds(0);
    let targetDay = target.getDay();
    targetDay = targetDay === 0 ? 7 : targetDay;

    if (number === weekCount[0]) {
        console.log(month + ''月第'' + number + ''周起始'', target);
        result.begin = target.getTime();
        target.setDate(target.getDate() + (7 - targetDay));//设置到周日最后一秒
        target.setHours(23);
        target.setMinutes(59);
        target.setSeconds(59);
        target.setMilliseconds(0);
        console.log(month + ''月第'' + number + ''周截止'', target);
        result.end = target.getTime();
        console.log(result);
        return result;
    }

    target.setDate(target.getDate() + (7 - targetDay) + 1);//对其到周一,设置到第二个周一0时0分0秒
    target.setDate(target.getDate() + 7 * (number - 2));//设置到第n周周日
    console.log(month + ''月第'' + number + ''周起始'', target);
    result.begin = target.getTime();

    if (number === weekCount[weekCount.length - 1]) {
        target.setMonth(month);//次月1日
        target.setDate(1);
        target.setHours(0);
        target.setMinutes(0);
        target.setSeconds(0);
        target.setMilliseconds(-1);//向前到当月最后1毫秒
        result.end = target.getTime();
        console.log(month + ''月第'' + number + ''周截止'', target);
        console.log(result);
        return result;
    }

    target.setDate(target.getDate() + 6);//设置到第n周周日
    target.setHours(23);
    target.setMinutes(59);
    target.setSeconds(59);
    target.setMilliseconds(0);
    result.end = target.getTime();
    console.log(month + ''月第'' + number + ''周截止'', target);
    console.log(result);
    return result;
}

/**
 * 获取每月有多少周
 * @param {*} year 
 * @param {*} month 
 */
function getWeekCountInMonth(year, month) {
    const list = [];
    const target = new Date();
    let offset = 1;
    target.setFullYear(year);
    target.setMonth(month - 1);
    target.setDate(1);
    target.setHours(0);
    target.setMinutes(0);
    target.setSeconds(0);
    target.setMilliseconds(0);
    let targetDay = target.getDay();
    targetDay = targetDay === 0 ? 7 : targetDay;

    if (targetDay !== 1) {
        console.log(targetDay);
        list.push(offset);
        offset = offset + 1;
        target.setDate(target.getDate() + (7 - targetDay) + 1);//对齐到周一
    }

    for (let i = offset; i <= 5; i++) {
        list.push(offset);
        offset = offset + 1;
        target.setDate(target.getDate() + 7);//设置到次周一0时分秒
        target.setMilliseconds(-1);//向前1毫秒到本周最后1毫秒
        console.log(target);
        if ((target.getMonth() + 1) !== month) {
            break;
        }
    }
    console.log(month + ''月周数'', list);
    return list;
}

/**
 * 获取上一月时间
 * @param {} date 
 */
function getPreMonth (date) {
    var _date = dateFormat(''YYYY-MM'', new Date(date));
    var arr = _date.split(''-'');
    var year = arr[0]; // 获取当前日期的年份
    var month = arr[1]; // 获取当前日期的月份
    var day = arr[2]; // 获取当前日期的日
    var days = new Date(year, month, 0);
    days = days.getDate(); // 获取当前日期中月的天数
    var year2 = year;
    var month2 = parseInt(month) - 1;
    if (month2 === 0) {
        year2 = parseInt(year2) - 1;
        month2 = 12;
    }
    var day2 = day;
    var days2 = new Date(year2, month2, 0);
    days2 = days2.getDate();
    if (day2 > days2) {
        day2 = days2;
    }
    if (month2 < 10) {
        month2 = ''0'' + month2;
    }
    var t2 = year2 + ''-'' + month2;
    return t2;
}
/**
 * 获取下一月时间
 * @param {时间} date 
 */
function getNextMonth (date) {
    var _date = dateFormat(''YYYY-MM'', new Date(date));
    var arr = _date.split(''-'');
    var year = arr[0]; // 获取当前日期的年份
    var month = arr[1]; // 获取当前日期的月份
    var day = arr[2]; // 获取当前日期的日
    var days = new Date(year, month, 0);
    days = days.getDate(); // 获取当前日期中的月的天数
    var year2 = year;
    var month2 = parseInt(month) + 1;
    if (month2 === 13) {
        year2 = parseInt(year2) + 1;
        month2 = 1;
    }
    var day2 = day;
    var days2 = new Date(year2, month2, 0);
    days2 = days2.getDate();
    if (day2 > days2) {
        day2 = days2;
    }
    if (month2 < 10) {
        month2 = ''0'' + month2;
    }

    var t2 = year2 + ''-'' + month2;
    return t2;
}
/**
 * 格式化时间
 * @param {YYYY-MM-DD hh:mm:ss} String 
 * @param {时间} date 
 */
function dateFormat (fmt, date) {
    date = new Date(date);
    let ret;
    let opt = {
        ''Y+'': date.getFullYear().toString(), // 年
        ''M+'': (date.getMonth() + 1).toString(), // 月
        ''D+'': date.getDate().toString(), // 日
        ''h+'': date.getHours().toString(), // 时
        ''m+'': date.getMinutes().toString(), // 分
        ''s+'': date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp(''('' + k + '')'').exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, ''0'')));
        }
    }
    return fmt;
}
// getMonthBeginEnd(2019, 9);
// getDateBeginEnd(2019, 10, 16);
// getWeekByMonth(2019, 10, 5);

ASP.NET 获取自然周、自然月等时间段

ASP.NET 获取自然周、自然月等时间段

根据当前时间获取,本周,本月,本季度等时间段

DateTime dt = DateTime.Now;  //当前时间

DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));  //本周周一
DateTime endWeek = startWeek.AddDays(6);  //本周周日

DateTime startMonth = dt.AddDays(1 - dt.Day);  //本月月初
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1);  //本月月末
//DateTime endMonth = startMonth.AddDays((dt.AddMonths(1) - dt).Days - 1);  //本月月末

DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);  //本季度初
DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1);  //本季度末

DateTime startYear = new DateTime(dt.Year, 1, 1);  //本年年初
DateTime endYear = new DateTime(dt.Year, 12, 31);  //本年年末

至于昨天、明天、上周、上月、上季度、上年度等等,只要AddDays()、AddMonths()、AddYears()这几种方法组合一下就可以了。


C#中datetime的使用
//如果你还不明白,再看一下中文显示星期几的方法就应该懂了
//由于DayOfWeek返回的是数字的星期几,我们要把它转换成汉字方便我们阅读,有些人可能会用switch来一个一个地对照,其实不用那么麻烦的
string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
string week = Day[Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))].ToString();

//上周,同理,一个周是7天,上周就是本周再减去7天,下周也是一样
DateTime.Now.AddDays(Convert.ToInt32 (1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7);        //上周一
DateTime.Now.AddDays(Convert.ToInt32 (1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7).AddDays(6);     //上周末(星期日)

//下周
DateTime.Now.AddDays(Convert.ToInt32 (1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) + 7);        //下周一
DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) + 7).AddDays(6);      //下周末

//本月,很多人都会说本月的第一天嘛肯定是1号,最后一天就是下个月一号再减一天。当然这是对的
//一般的写法
DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1"; //第一天
DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1").AddMonths(1).AddDays(-1).ToShortDateString();//最后一天


//巧用C#里ToString的字符格式化更简便
DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();
//上个月,减去一个月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

//下个月,加去一个月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString();

//7天后
DateTime.Now.Date.ToShortDateString();
DateTime.Now.AddDays(7).ToShortDateString();

//7天前
DateTime.Now.AddDays(-7).ToShortDateString();
DateTime.Now.Date.ToShortDateString();

//本年度,用ToString的字符格式化我们也很容易地算出本年度的第一天和最后一天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();

//上年度,不用再解释了吧
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();

//下年度
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();

//本季度,很多人都会觉得这里难点,需要写个长长的过程来判断。其实不用的,我们都知道一年四个季度,一个季度三个月
//首先我们先把日期推到本季度第一个月,然后这个月的第一天就是本季度的第一天了
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).AddDays(1 - DateTime.Now.Day);

//同理,本季度的最后一天就是下季度的第一天减一
DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

//下季度
DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

//上季度
DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)). AddDays(1 - DateTime.Now);
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).AddDays(1 - DateTime.Now.Day).AddDays(-1).ToShortDateString();

C# 自然周,月,季度计算。

C# 自然周,月,季度计算。

/// <summary>
        /// 判断时间是否和服务器时间是一天
        /// </summary>
        /// <param name="cs"></param>
        /// <returns></returns>
        public static bool JudgeTimeIsToDay(DateTime cs)
        {

            DateTime start = Convert.ToDateTime(cs.ToShortDateString());
            DateTime end = Convert.ToDateTime(DateTime.Now.ToShortDateString());
            TimeSpan sp = end.Subtract(start);
            return sp.Days == 0;
        }

        /// <summary>
        /// 计算当前季度多少天
        /// </summary>
        /// <returns></returns>
        public static int DateDiff()
        {
            DateTime start = Convert.ToDateTime(ToFirstDayOfSeason().ToShortDateString());
            DateTime end = Convert.ToDateTime(ToLastDayOfSeason().ToShortDateString());
            TimeSpan sp = end.Subtract(start);

            return sp.Days;
        }

        /// <summary>
        /// 计算当前月有多少天
        /// </summary>
        /// <returns></returns>
        public static int GetMonthDays()
        {
            return System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
        }

        /// <summary>   
        /// 计算本周的周一日期   
        /// </summary>   
        /// <returns></returns>   
        public static DateTime GetMondayDate()
        {
            return GetMondayDate(DateTime.Now);
        }

        /// <summary>   
        /// 计算本周周日的日期   
        /// </summary>   
        /// <returns></returns>   
        public static DateTime GetSundayDate()
        {
            return GetSundayDate(DateTime.Now);
        }

        /// <summary>
        /// 获取本月最后一天
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public static DateTime LastDayOfMonth()
        {
            return DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(1).AddDays(-1);
        }

        /// <summary>   
        /// 计算本月的第一天   
        /// </summary>   
        /// <returns></returns> 
        public static DateTime FirstDayOfMonth()
        {
            return DateTime.Now.AddDays(1 - DateTime.Now.Day);
        }

        /// <summary>
        ///  获取该时间所在季度的第一天
        /// </summary>
        /// <returns></returns>
        public static DateTime ToFirstDayOfSeason()
        {
            return ToFirstDayOfSeason(DateTime.Now);
        }

        /// <summary>
        /// 获取该时间所在季度的最后一天
        /// </summary>
        /// <returns></returns>
        public static DateTime ToLastDayOfSeason()
        {
            return ToLastDayOfSeason(DateTime.Now);
        }

        /// <summary>
        /// 获取该时间所在季度的第一天
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        public static DateTime ToFirstDayOfSeason(DateTime target)
        {
            int ThisMonth = DateTime.Now.Month;
            int FirstMonthOfSeason = ThisMonth - (ThisMonth % 3 == 0 ? 3 : (ThisMonth % 3)) + 1;
            target = target.AddMonths(FirstMonthOfSeason - ThisMonth);

            return Convert.ToDateTime(target.ToString("yyyy-MM-01 HH:mm:ss"));
        }

        /// <summary>
        /// 获取该时间所在季度的最后一天
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        public static DateTime ToLastDayOfSeason(DateTime target)
        {
            int ThisMonth = DateTime.Now.Month;
            int FirstMonthOfSeason = ThisMonth - (ThisMonth % 3 == 0 ? 3 : (ThisMonth % 3)) + 3;
            target = target.AddMonths(FirstMonthOfSeason - ThisMonth);

            return Convert.ToDateTime(target.AddMonths(1).ToString("yyyy-MM-01 HH:mm:ss")).AddDays(-1);
        }

        /// <summary>   
        /// 计算本月的第一天   
        /// </summary>   
        /// <returns></returns> 
        public static DateTime FirstDayOfMonth(DateTime datetime)
        {
            return datetime.AddDays(1 - datetime.Day);
        }

        /// <summary>
        /// 获取本月最后一天
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public static DateTime LastDayOfMonth(DateTime datetime)
        {
            return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
        }

        /// <summary>   
        /// 计算某日起始日期(礼拜一的日期)   
        /// </summary>   
        /// <param name="someDate">该周中任意一天</param>   
        /// <returns>返回礼拜一日期,后面的具体时、分、秒和传入值相等</returns>   
        public static DateTime GetMondayDate(this DateTime someDate)
        {
            int i = someDate.DayOfWeek - DayOfWeek.Monday;
            if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。   
            TimeSpan ts = new TimeSpan(i, 0, 0, 0);
            return someDate.Subtract(ts);
        }

        /// <summary>   
        /// 计算某日结束日期(礼拜日的日期)   
        /// </summary>   
        /// <param name="someDate">该周中任意一天</param>   
        /// <returns>返回礼拜日日期,后面的具体时、分、秒和传入值相等</returns>   
        public static DateTime GetSundayDate(this DateTime someDate)
        {
            int i = someDate.DayOfWeek - DayOfWeek.Sunday;
            if (i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。   
            TimeSpan ts = new TimeSpan(i, 0, 0, 0);
            return someDate.Add(ts);
        }

        public static DateTime GetSundayDate(this DateTime someDate, int hour, int minute, int second)
        {
            int i = someDate.DayOfWeek - DayOfWeek.Sunday;
            if (i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。   
            TimeSpan ts = new TimeSpan(i, 0, 0, 0);
            var ret = someDate.Add(ts);

            ret = ret.AddHours(hour - ret.Hour);
            ret = ret.AddMinutes(minute - ret.Minute);
            ret = ret.AddSeconds(second - ret.Second);
            return ret;
        }

iView 开始结束时间组件

iView 开始结束时间组件

演示地址:https://run.iviewui.com/TGIKGkIt

 

测试页面文件:

 1 <template>
 2   <div>
 3     <startEndTime @newEndTime="newEndTimeData" :startEndTimeData="timeDataObj"></startEndTime>
 4     <div style="text-align:center"> 选择的时间是:{{endTimeDate}}</div>
 5   </div>
 6 </template>
 7 <script>
 8 
 9 import startEndTime from "../components/startEndTime.vue"
10 
11 export default {
12   name: "text-template",
13   data() {
14     return {
15       endTimeDate: "",
16       timeDataObj: {
17         timeName: "日期区间", // 日期名称
18         timeType: "datetimerange", // 类型:date、daterange、datetime、datetimerange、year、month
19         timeShortcuts: { // 显示左边内容,不传不显示
20           shortcuts: [
21             {
22               text: "最近一周",
23               value() {
24                 const end = new Date();
25                 const start = new Date();
26                 start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
27                 return [start, end];
28               }
29             },
30             {
31               text: "最近一个月",
32               value() {
33                 const end = new Date();
34                 const start = new Date();
35                 start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
36                 return [start, end];
37               }
38             }
39           ],
40         },
41         timeFormat: "yyyy-MM-dd HH:mm:ss", // 时间格式
42         timeModel: "", //
43       }
44     };
45   },
46   methods: {
47     newEndTimeData(val){
48       this.endTimeDate = val
49     }
50   },
51   components: {
52     startEndTime
53   }
54 };
55 </script>

开始结束日期组件 startEndTime.vue

 1 <template>
 2 <div style="width:353px;margin:50px auto">
 3     <Row>
 4         <Col span="24">
 5             {{startEndTimeData.timeName || ''时间''}}
 6             <DatePicker v-model="startEndTimeData.timeModel" :type="startEndTimeData.timeType || ''date''" @on-change="changeEndTime" :options="startEndTimeData.timeShortcuts" :format="startEndTimeData.timeFormat || ''yyyy-MM-dd HH:mm''" placeholder="开始结束时间" style="width: 300px"></DatePicker>
 7         </Col>
 8     </Row>
 9 </div>
10 </template>
11 <script>
12 export default {
13   data() {
14     return {
15     };
16   },
17   props: {
18     startEndTimeData: Object
19   },
20   methods: {
21     changeEndTime(val){
22       this.$emit("newEndTime",val)
23     }
24   }
25 };
26 </script>

 

java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期

java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期

思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,

(1)若该日是周日,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明该周起始日期应该是本月1号。

(1)若该日不是周日,且是该月最后一天,则应该在上面计算的基础上再加一周,视月末为该周的结束日,该周起始日期应为改日期减去改日

在一周中的位置加2,例如:2013-09-30号是周一,则视为9月份中的第六周,开始日期是30-2+2

提示:Calendar 类中视周日为一周的开始,值是1

示例代码:

public static void printfWeeks(String date) throws Exception {
        // String date = "2013-09";
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
        Date date1 = dateFormat.parse(date);
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date1);
        int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println("days:" + days);
        int count = 0;
        for (int i = 1; i <= days; i++) {
            DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
            Date date2 = dateFormat1.parse(date + "-" + i);
            calendar.clear();
            calendar.setTime(date2);
            int k = new Integer(calendar.get(Calendar.DAY_OF_WEEK));
            if (k == 1) {// 若当天是周日
                count++;
                System.out.println("-----------------------------------");
                System.out.println("第" + count + "周");
                if (i - 6 <= 1) {
                    System.out.println("本周开始日期:" + date + "-" + 1);
                } else {
                    System.out.println("本周开始日期:" + date + "-" + (i - 6));
                }
                System.out.println("本周结束日期:" + date + "-" + i);
                System.out.println("-----------------------------------");
            }
            if (k != 1 && i == days) {// 若是本月最好一天,且不是周日
                count++;
                System.out.println("-----------------------------------");
                System.out.println("第" + count + "周");
                System.out.println("本周开始日期:" + date + "-" + (i - k + 2));
                System.out.println("本周结束日期:" + date + "-" + i);
                System.out.println("-----------------------------------");
            }
        }
    }

测试代码:

public static void main(String[] args) throws Exception {
        String s = "2013-";
        for (int i = 1; i <= 12; i++) {
            System.out.println("");
            System.out.println("月份:" + i);
            printfWeeks(s + i);
            System.out.println("
");

        }
//        printfWeeks(s + 2);
    }

关于js 获取自然周 / 自然月 / 自然日开始结束时间戳js获取当前自然周的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于ASP.NET 获取自然周、自然月等时间段、C# 自然周,月,季度计算。、iView 开始结束时间组件、java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期等相关内容,可以在本站寻找。

本文标签: