CSDN博客

img zhaobisha

C#中的年、月、日、星期转换方法集锦

发表于2008/9/29 21:27:00  1455人阅读

分类: 我的C#之路

//第1篇

1、DateTime   数字型    
  System.DateTime   currentTime=new   System.DateTime();    
   
  1.1   取当前年月日时分秒    
  currentTime=System.DateTime.Now;    


  1.2   取当前年    
  int   年=currentTime.Year;    


  1.3   取当前月    
  int   月=currentTime.Month;    


  1.4   取当前日    
  int   日=currentTime.Day;    


  1.5   取当前时    
  int   时=currentTime.Hour;    


  1.6   取当前分    
  int   分=currentTime.Minute;    


  1.7   取当前秒    
  int   秒=currentTime.Second; 


  1.8   取当前毫秒    
  int   毫秒=currentTime.Millisecond;    
  (变量可用中文)    
     
  1.9   取中文日期显示——年月日时分    
  string   strY=currentTime.ToString("f");   //不显示秒    
     
  1.10   取中文日期显示_年月    
  string   strYM=currentTime.ToString("y");    
     
  1.11   取中文日期显示_月日    
  string   strMD=currentTime.ToString("m");    
     
  1.12   取中文年月日    
  string   strYMD=currentTime.ToString("D");    
     
  1.13   取当前时分,格式为:14:24    
  string   strT=currentTime.ToString("t");    
     
  1.14   取当前时间,格式为:2003-09-23T14:46:48    
  string   strT=currentTime.ToString("s");    
     
  1.15   取当前时间,格式为:2003-09-23   14:48:30Z    
  string   strT=currentTime.ToString("u");    
     
  1.16   取当前时间,格式为:2003-09-23   14:48    
  string   strT=currentTime.ToString("g");    
     
  1.17   取当前时间,格式为:Tue,   23   Sep   2003   14:52:40   GMT    
  string   strT=currentTime.ToString("r");    
     
  1.18获得当前时间   n   天后的日期时间    
  DateTime   newDay   =   DateTime.Now.AddDays(100);  

 

//第2篇

    #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

    #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 int CaculateWeekDayID(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;
        return week;
    }
    #endregion

    #region 根据星期序号转换为星期几
    /**/
    /// <summary>
    /// 根据年月日计算是一星期中的第几天(Label2.Text=CaculateWeekDay(2004,12,9);)
    /// </summary>
    /// <param name="y">年</param>
    /// <returns></returns>
    public static string WeekDayID2WeekDayString(string strID)
    {
        string strWeekDay = "";
        string weekstr = "";
        for (int y = 1; y < 8; y++)
        {
            if (strID.IndexOf(y.ToString()) > -1)
            {
                weekstr = "";
                switch (y)
                {
                    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;
                }
                if (strWeekDay != "")
                {
                    strWeekDay += ",";
                }
                strWeekDay += weekstr;
            }
        }
        return strWeekDay;
    }
    #endregion

 

 

//第3篇

c#中取星期方法一:
string weekstr = DateTime.Now.DayOfWeek.ToString();
        switch (weekstr)
        {
            case "Monday": weekstr = "星期一"; break;
            case "Tuesday": weekstr = "星期二"; break;
            case "Wednesday": weekstr = "星期三"; break;
            case "Thursday": weekstr = "星期四"; break;
            case "Friday": weekstr = "星期五"; break;
            case "Saturday": weekstr = "星期六"; break;
            case "Sunday": weekstr = "星期日"; break;
        }
方法二:
基姆拉尔森计算公式
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来代入公式计算。

代码如下:
//y-年,m-月,d-日期
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;
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;
}

调用方法:
Label2.Text=CaculateWeekDay(2004,12,9);

阅读全文
0 0

相关文章推荐

img
取 消
img