C#实现的根据日期得到今天是星期几

算法如下: 
  基姆拉尔森计算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
  在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方:
  把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
但是在测试的时候发现有点出入,就是公式存在一点问题,得稍做修改:
 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 +1
代码如下:

#region 根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);)
        /// <summary>
        /// 根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);)
        /// </summary>
        /// <param name="y">年</param>
        /// <param name="m">月</param>
        /// <param name="d">日</param>
        /// <returns></returns>
        public static string CaculateWeekDay(int y,int m, int d)
        {
            if(m==1) m=13;
            if(m==2) m=14;
            int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1; 
            string weekstr="";
            switch(week)
            {
                case 1: weekstr="星期一"; break;
                case 2: weekstr="星期二"; break;
                case 3: weekstr="星期三"; break;
                case 4: weekstr="星期四"; break;
                case 5: weekstr="星期五"; break;
                case 6: weekstr="星期六"; break;
                case 7: weekstr="星期日"; break;
            }

            return weekstr; 
        }
        #endregion

在开发网站的过程中,如开发新闻网站、论坛、聊天室等,都需要获取当前系统日期,本实例介绍如何获取系统日期并将系统日期用不同的格式显示出来。实例运行结果如图7.1所示。

获取当前系统日期并将其转化为短日期格式的代码如下:

Label1.Text = System.DateTime.Now.ToShortDateString();

获取当前系统日期并将其转化为长日期格式的代码如下:

Label2.Text = System.DateTime.Now.ToLongDateString();

注意:DateTime对象中的Now属性可以用DateTime对象中的Today属性代替,DataTime.Now属性与DataTime.Today属性都是用来获取当前系统时间的。

在开发游戏类网站时,往往需要将玩家的闯关时间记录下来,设立排行榜,增强游戏的趣味性。本实例将会介绍如何获取当前系统时间并将其格式化。实例运行结果如图7.2所示。

获取当前系统时间并将其转化为短时间格式的代码如下:

Label1.Text = System.DateTime.Now.ToShortTimeString();

获取当前系统日期并将其转化为长日期格式的代码如下:

Label2.Text = System.DateTime.Now.ToLongTimeString();

一些网站的首页会将当前系统日期和时间都显示出来,以美化网站。本实例介绍如何同时获得系统当前日期和时间。实例运行结果如图7.3所示。

同时获得系统当前日期和时间的代码如下:

Label1.Text = DateTime.Now.ToString();

在本实例中,主要实现的是使用DateTime结构的DayofWeek属性来获取当前日期是星期几,并将返回指定日期是星期几的英文单词转化为相应的汉字。代码如下:

public static string dt;

public static string week;

protected void Button1_Click(object sender, EventArgs e)

{

//获取当前日期是星期几

dt = DateTime.Today.DayOfWeek.ToString();

//根据取得的英文单词返回汉字

switch (dt)

{

case "Monday":

week ="星期一";

break ;

case "Tuesday":

week = "星期二";

break;

case "Wednesday":

week = "星期三";

break;

case "Thursday":

week = "星期四";

break;

case "Friday":

week = "星期五";

break;

case "Saturday":

week = "星期六";

break;

case "Sunday":

week = "星期日";

break;

}

//利用TextBox文本框显示当前日其为星期几

TextBox1.Text = week;

}

}

本实例主要是获取指定年份中的天数,首先使用DateTime结构的Year属性来取得年份,然后根据DateTime结构的IsLeapYear方法来判断取得年份是否为闰年,如果为闰年,则显示“366天”,否则显示“365天”。代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

//判断是否是闰年

if (DateTime.IsLeapYear(Convert.ToInt32(DateTime.Now.Year.ToString())))

{

//如果是闰年

TextBox1.Text = "366";

}

else

{

//如果不是闰年

TextBox1.Text = "365";

}

}

本实例主要获取当前月的天数,使用DateTime结构的Year和Month属性取得当前日期所在的年和月,然后在switch语句中根据不同的年份和月份返回指定月份的天数。代码如下:

public static int year;

public static int month;

public static int days;

protected void Button1_Click(object sender, EventArgs e)

{

year = DateTime.Now.Year;

month = DateTime.Now.Month;

//得到当前月的天数

switch (month)

{

case 1:

days = 31;

break;

case 2:

if (DateTime.IsLeapYear(year))

{

//闰年二月为29天

days = 29;

}

else

{

//不是闰年,二月为28天

days = 28;

}

break;

case 3:

days = 31;

break;

case 4:

days = 30;

break;

case 5:

days = 31;

break;

case 6:

days = 30;

break;

case 7:

days = 31;

break;

case 8:

days = 31;

break;

case 9:

days = 30;

break;

case 10:

days = 31;

break;

case 11:

days = 30;

break;

case 12:

days = 31;

break;

}

TextBox1.Text = days.ToString();

}

本实例主要实现“取得当前日期的前一天”功能,使用了DateTime结构的AddDays方法,在指定的DateTime实例的值上加上“-1”天取得所要的结果。代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

TextBox1.Text = DateTime.Now.AddDays(-1).ToString();

}

在DataTime结构中,与AddDays方法实现功能相类似的方法如表7.1所示。

表7.1                                            将日期格式化为指定格式常用方法

方 法 名 称
说    明

Add
将指定的TimeSpan的值加到实例的值上

AddHours
将指定的小时数加到实例的值上

AddMilliseconds
将指定的毫秒数加到实例的值上

AddMinutes
将指定的分钟数加到实例的值上

AddMonths
将指定的月份数加到实例的值上

AddSeconds
将指定的秒数加到实例的值上

AddYears
将指定的年份加到实例的值上

TimeSpan对象表示时间间隔或持续时间,按正负天数、小时数、分钟数、秒数以及秒的小数部分进行度量。在本实例中,首先定义了两个时间dateTime1和dateTime2,并分别为其赋值,然后定义了一个TimeSpan对象,并将dateTime1和dateTime2之间的时间间隔赋给TimeSpan对象。代码如下:

DateTime dateTime1 = DateTime.Parse(DateTime.Now.AddSeconds(30).ToString());

DateTime dateTime2 = DateTime.Parse(DateTime.Now.ToString());

TimeSpan timeSpan = dateTime1 - dateTime2;

TextBox1.Text =timeSpan.ToString();

//-----------------------------------------------------------------------------------------------------------

一周从周日算起   
  DateTime   mDatetime=new   DateTime(year,1,1);//year为要求的那一年   
  int   firstweekfirstday=Convert.ToInt32(mDTime.DayOfWeek);//一年中第一天是周几   
  days=(double)(6-firstweekfirstday);   
  DateTime   secondweekfisrtday=mDTime.AddDays(days);第二周一   
  fisrtday=MDatetime.AddDays(week*7);//第N周第一天   
  lastday=MDatetime.AddDays(week*7+6);//第N周最后一天   
    
  一周从周一算起   
  DateTime   mDatetime=new   DateTime(year,1,1);//year为要求的那一年   
  int   firstweekfirstday=Convert.ToInt32(mDTime.DayOfWeek);//一年中第一天是周几   
  days=(double)(7-firstweekfirstday);   
  DateTime   secondweekfisrtday=mDTime.AddDays(days);第二周一   
  fisrtday=MDatetime.AddDays(week*7);//第N周第一天   
  lastday=MDatetime.AddDays(week*7+6);//第N周最后一天

javascript:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
function showDateCount(year,weekNum){
 var date=new Date(year,0,(7*weekNum));
 var FD=new Date(date.getYear(),(date.getMonth()),(date.getDate()-date.getDay()+1))
 var Monday=FD.getYear()+"-"+(FD.getMonth()+1)+"-"+FD.getDate()//一周的第一天
 
 var LD=new Date(date.getYear(),(date.getMonth()),(date.getDate()-date.getDay()+7))
 var Sunday=LD.getYear()+"-"+(LD.getMonth()+1)+"-"+LD.getDate() //一周的最后一天
 alert(year+"年第"+weekNum+"周是"+Monday+"至"+Sunday)
}
</SCRIPT>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<input type="text" value="2007" size="20" name="year">年<input type="text" name="weekNum" value="30" size="20">
<input type="button" name="GO" value="Click" onClick="showDateCount(year.value,weekNum.value)">

</BODY>
</HTML>

c#
//monthCalendar1是日历控件
 System.Globalization.ChineseLunisolarCalendar c = new ChineseLunisolarCalendar();
        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            DateTime MySelectDate = e.End;
            txt_nonglidate.Text = string.Format(CultureInfo.InstalledUICulture, "{0}-{1}-{2}", c.GetYear(MySelectDate), c.GetMonth(MySelectDate), c.GetDayOfMonth(MySelectDate));
        }

时间: 2024-10-06 01:48:30

C#实现的根据日期得到今天是星期几的相关文章

格式化日期(月和星期)

// /**// * 格式化日期(月和星期)// * sFormat:日期的格式(如yy-MM-dd).年:y,月:M,日:d,时:h,分:m,秒:s// * sLanguage: 默认为中文.当为'en'的时候是英文.// */// window.dateFormat=function(date, sFormat, sLanguage){// var time = {};// time.Year = date.getFullYear();// time.TYear = ("" + t

日期间隔,当前是星期几

获取未来某一日期是星期几 /** *  获取未来某个日期是星期几 *  注意:featureDate 传递过来的格式 必须 和 formatter.dateFormat 一致,否则endDate可能为nil * */ - (NSString *)featureWeekdayWithDate:(NSString *)featureDate{ // 创建 格式 对象 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // 设置

js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子

JS获取日期时遇到如下需求,根据某年某周获取一周的日期.如开始日期规定为星期四到下一周的星期五为一周. 格式化日期: function getNowFormatDate(theDate) { var day = theDate; var Year = 0; var Month = 0; var Day = 0; var CurrentDate = ""; // 初始化时间 Year= day.getFullYear();// ie火狐下都可以 Month= day.getMonth()

javascript 字符串转日期 获取当天是星期几

服务器传回日期字符串 格式如下: 2015-01-20 12:03:12 2015-01-19 19:10:00 2015-01-19 12:00:00 2015-01-19 08:41:00 2015-01-16 12:23:46 要求 判断该日期是星期几 转成如下格式: 首先把字符串转换成日期格式 查了一些方法 下面这个最简单 var str = '2015-01-20 12:03:12'; dateStr = dateStr.replace(/-/g,'/'); var date = ne

根据日期获得当天是星期几

如今在程序时代,什么都用程序来解决.那当然是很方便的.因此,你问我2003年10月1日是星期几,我很可能就会直接用程序来告诉你. echo date('w',strtotime('2003-10-1')); 但事实上,我们也都知道,PHP的date函数是有时间范围区间的,即只能从1970~2038年,因此在这个区间范围之外的算法都是不准的.那倒 底怎么算呢?其实是有一个公式的: 蔡 勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公 式中的符号含义

jQuery日期获取月和星期

1 <div: id="clock"></div:> 2 <script> 3 function a(clock){ 4 var now =new Date(); 5 var month=now.getMonth()+1; 6 var day=now.getDay(); 7 var s=now.getSeconds(); 8 var arr=new Array("星期日","星期一","星期二&quo

日期类问题-判断星期几

题目及思路: 代码: #include <stdio.h> #include <string.h> int isLeapYear(int x){//1代表闰年 if( (x%4==0 && x%100!=0) || x%400==0) return 1; return 0; } int dayOfMonth[13][2]{ 0,0, 31,31, 28,29, 31,31, 30,30, 31,31, 30,30, 31,31, 31,31, 30,30, 31,3

Java日期与时间的处理/Date,String,Calendar转换

public class Demo01 { //Java中Date类和Calendar简介 public static void main(String[] args) { long now=System.currentTimeMillis(); System.out.println("now= "+now); Date d1=new Date(now); System.out.println("d1= "+d1); Calendar c1=Calendar.get

C语言实现时间差、星期、天数算日期(转)

原文地址:http://blog.csdn.net/coder_xia/article/details/6566708 最近因为一个项目需要,默认一个时间值,即当天的前一天日期,顺手就将其他的几个功能一并实现了,主要为 1.两个日期之间的时间差 2.某个日期之后,绝对值差值之后的某个日期 3.某年日期,算出星期几 下面见源码: #ifndef CALCULATE_H #define CALCULATE_H typedef struct { int year; int month; int day