楼上几层的代码都太多了,不用那么复杂。
先跟你说一下原理:
1国际上的WeekDay是从周日到周六的顺序
2再说C#的DayOfWeek枚举值是依次从0到6,即周一的枚举值为1
3算法规律:非周一的就要去获取上周一,而一周有7天。以周一为分界点,当天为周二及往后,则算法为减7天后再减当天N数再加1;周日的话,算法为减7天后再加1。
以此算法规律,可建立获取任意指定日期的上周几的日期的通用方法,代码如下:
pubilc DateTime getWeekUpOfDate(DateTime dt,DayOfWeek weekday,int Number)
{
int wd1=(int)weekday;
int wd2=(int)dtDayOfWeek;
return wd2==wd1dtAddDay(7Number):dtAddDay(7Number-wd2+wd1);
}
参数说明:dt为指定的以哪个日期来计算,weekday为计算(上、当前、下)几周的周几
方法调用如下:
DateTime dt=getWeekUpOfDate(DateTimeNow,DayOfWeekMonday,-1);
这是获取当前日期的上周一的日期
DateTime dt=getWeekUpOfDate(DateTimeNow,DayOfWeekMonday,-2);
这是获取当前日期的上上周一的日期
DateTime dt=getWeekUpOfDate(DateTimeNow,DayOfWeekMonday,1);
这是获取当前日期的下周一的日期
DateTime dt=getWeekUpOfDate(DateTimeNow,DayOfWeekMonday,0);
这是获取本周周一的日期
获取 日期 时间 星期几
var d = new Date();
var datestr = "今天是: " +dgetFullYear() + "-" +(dgetMonth()+1) + "-" + dgetDate() + " " + dgetHours() + ":" + dgetMinutes() + ":" + dgetSeconds() + " 星期"+"日一二三四五六"charAt(dgetDay())
// 判断闰年
DateprototypeisLeapYear = function()
{
return (0==thisgetYear()%4&&((thisgetYear()%100!=0)||(thisgetYear()%400==0)));
}
// 日期格式化
// 格式 YYYY/yyyy/YY/yy 表示年份
// MM/M 月份
// W/w 星期
// dd/DD/d/D 日期
// hh/HH/h/H 时间
// mm/m 分钟
// ss/SS/s/S 秒
//---------------------------------------------------
DateprototypeFormat = function(formatStr)
{
var str = formatStr;
var Week = ['日','一','二','三','四','五','六'];
str=strreplace(/yyyy|YYYY/,thisgetFullYear());
str=strreplace(/yy|YY/,(thisgetYear() % 100)>9 (thisgetYear() % 100)toString():'0' + (thisgetYear() % 100));
next_day(),last_day(),add_months()这几个函数估计需要用到,还有就是闰年的问题,注意一下就行,可能需要特殊处理
大致过程,首先获取上周每一天的日期,然后根据每个日期获取去年的相同日期,具体怎么获取,自己多试验下,无非是几个函数的组合,不会太难
import javatextSimpleDateFormat;
import javautilCalendar;
public class Demo {
public static void main(String[] args) {
// 日期格式转换
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// 当前日期
Calendar instance = CalendargetInstance();
// 调整到上周
instanceadd(CalendarWEDNESDAY, -1);
// 调整到上周1
instanceset(CalendarDAY_OF_WEEK, 2);
//循环打印
for (int i = 1; i <= 5; i++) {
Systemoutprintln("星期" + i + ":" + formatformat(instancegetTime()));
instanceadd(CalendarDAY_OF_WEEK, 1);
}
}
}
如果是获取前一周的日期(当前日期回退一周)可以用这个:
date -d "-7 days" +"%Y-%m-%d"
或者:date -d "-1 weeks" +"%Y-%m-%d"
以上就是关于c#winform中怎么获得上周一的日期全部的内容,包括:c#winform中怎么获得上周一的日期、js获取当前日期,然后根据当前日期获取到上周周一跟周五的日期,并格式化日期yyyy-MM-dd、oracle 怎么取上周每天与去年同期每天的同比数,这日期函数应该怎么用,谢谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)