计算某一天是星期几(C#)
2008-08-30 16:28
176 查看
///已知2000年1月1日是星期六,如何知道某一天是星期几?
///只要知道这一天相距2000年1月1日的天数n,让n除以7得出余数m;
///如果该天在2000年1月1日之前,则把6-m,得到的就是该天的星期数。
///如果该天在2000年1月1日之后,则把n=6+m(如果6+m>7,则n=6+m-7),n就是该天的星期数。
///程序清单如下:
class Calendar ///定义一个日历类
{
private readonly int year;
private readonly byte month;
private readonly byte day;
private readonly byte week;
public Calendar(int cyear, byte cmonth, byte cday) ///Calendar的构造函数。
{ ///初始化年,月,日,并计算该年月日是星期几。
double daysDiff = 0.0, daysOfThisYear = 0.0;
year = cyear;
month = cmonth;
day = cday;
if(cyear<2000) ///如果是2000年以前的年份
while (++cyear < 2000)
{
daysDiff += isLeapYear(cyear) ? 366.0 : 365.0; ///2000年以前到该年之间的每年天数的累加和
}
else ///如果是2000年以后的年份
while (--cyear >= 2000)
{
daysDiff += isLeapYear(cyear) ? 366.0 : 365.0; ///2000年以后到该年之间的每年天数的累加和
}
while (--cmonth >= 1)
{
daysOfThisYear += daysOfTheMonth(cmonth); ///计算该年已经过了多少天
}
daysOfThisYear += cday;
if (year < 2000)
{
daysOfThisYear = (isLeapYear(year) ? 366.0 : 365.0 )- daysOfThisYear;
daysOfThisYear++;
}
else
daysOfThisYear--;
daysDiff += daysOfThisYear;
daysDiff %= 7;
if (year >= 2000)
daysDiff += 6.0;
else
daysDiff = 6.0 - daysDiff;
week = Convert.ToByte(daysDiff % 7.0);
}
private bool isLeapYear(int lyear) ///判断某年是否是闰年
{
if (lyear % 4 == 0)
if (lyear % 100 == 0)
if (lyear % 400 == 0)
return true;
else
return false;
else
return true;
else
return false;
}
private byte daysOfTheMonth(byte dmonth) ///返回一年中指定月份(dmonth)的天数
{
byte[] daysPmonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (dmonth == 2 && isLeapYear(year))
return (byte)(daysPmonth[dmonth - 1] + 1);
return daysPmonth[dmonth - 1];
}
public string Week ///返回星期的中文
{
get
{
String[] weekstr = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return weekstr[week];
}
}
}
class Program
{
static void Main(string[] args)
{
Calendar myc=new Calendar(2008,6,4);
Console.WriteLine(myc.Week);
Console.ReadKey();
}
}
///只要知道这一天相距2000年1月1日的天数n,让n除以7得出余数m;
///如果该天在2000年1月1日之前,则把6-m,得到的就是该天的星期数。
///如果该天在2000年1月1日之后,则把n=6+m(如果6+m>7,则n=6+m-7),n就是该天的星期数。
///程序清单如下:
class Calendar ///定义一个日历类
{
private readonly int year;
private readonly byte month;
private readonly byte day;
private readonly byte week;
public Calendar(int cyear, byte cmonth, byte cday) ///Calendar的构造函数。
{ ///初始化年,月,日,并计算该年月日是星期几。
double daysDiff = 0.0, daysOfThisYear = 0.0;
year = cyear;
month = cmonth;
day = cday;
if(cyear<2000) ///如果是2000年以前的年份
while (++cyear < 2000)
{
daysDiff += isLeapYear(cyear) ? 366.0 : 365.0; ///2000年以前到该年之间的每年天数的累加和
}
else ///如果是2000年以后的年份
while (--cyear >= 2000)
{
daysDiff += isLeapYear(cyear) ? 366.0 : 365.0; ///2000年以后到该年之间的每年天数的累加和
}
while (--cmonth >= 1)
{
daysOfThisYear += daysOfTheMonth(cmonth); ///计算该年已经过了多少天
}
daysOfThisYear += cday;
if (year < 2000)
{
daysOfThisYear = (isLeapYear(year) ? 366.0 : 365.0 )- daysOfThisYear;
daysOfThisYear++;
}
else
daysOfThisYear--;
daysDiff += daysOfThisYear;
daysDiff %= 7;
if (year >= 2000)
daysDiff += 6.0;
else
daysDiff = 6.0 - daysDiff;
week = Convert.ToByte(daysDiff % 7.0);
}
private bool isLeapYear(int lyear) ///判断某年是否是闰年
{
if (lyear % 4 == 0)
if (lyear % 100 == 0)
if (lyear % 400 == 0)
return true;
else
return false;
else
return true;
else
return false;
}
private byte daysOfTheMonth(byte dmonth) ///返回一年中指定月份(dmonth)的天数
{
byte[] daysPmonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (dmonth == 2 && isLeapYear(year))
return (byte)(daysPmonth[dmonth - 1] + 1);
return daysPmonth[dmonth - 1];
}
public string Week ///返回星期的中文
{
get
{
String[] weekstr = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return weekstr[week];
}
}
}
class Program
{
static void Main(string[] args)
{
Calendar myc=new Calendar(2008,6,4);
Console.WriteLine(myc.Week);
Console.ReadKey();
}
}
相关文章推荐
- JavaScript计算某一天是星期几的方法
- 如何10秒钟快速计算出2014年某一天星期几
- 再说10秒钟计算2014年某一天星期几
- 黑马程序员---------------------编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, * 程序计算这一天是星期几,并且计算出是一年中的第几天
- 60秒轻松计算出任意一年任意一天星期几?
- C#实现的根据年月日计算星期几的函数 选择自 fanz2000 的 Blog
- 计算某一天星期几的一种解法
- C#实现的根据年月日计算星期几的函数
- C#实现的根据年月日计算星期几的函数 (转载)
- 如何计算某一天是星期几?
- 【转载】对C#DateTime的一些扩展,计算周内第一天,最后一天
- 怎样计算任一天是星期几
- C#实现的根据年月日计算星期几的函数
- 番茄零乱初学C#之计算某天是星期几[蔡勒(Zeller)公式]
- 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 怎样计算任一天是星期几
- 60秒轻松计算出任意一年任意一天星期几?
- C#实现的根据年月日计算星期几的函数
- 利用Python计算某一年的某一天是星期几
- C# 获取当前月第一天和最后一天 计算两个日期差多少天