写一个函数,按当前不同的时间返回给不同的时间结果,也就是自动判断一个地区的夏时令和冬季时间,是这样:三月的最后一个星期天凌晨两点开始,将当地时间加一个小时,与北京时差为7小时。十月的最后一个星期天凌晨三点结束,恢复为夏令时实施前的当地时间,与北京时差为6小时.(简单的说,就是3月的最后一个星期天凌晨两点到10月最后一个星期天的凌晨三点返回夏时令时间,这以外的都返回冬季时间),返回计算时差了以后的时间。
昨天半夜在CSDN里问了人,这里有一个判断每月最后一个星期天是几号的代码,供大家参考)
苦思冥想,不知该如何判断,请师兄们帮忙!
时间格式如: 2005-12-5  17:12:32    DateTime dt = DateTime.Now;
dt = new DateTime(dt.Year, dt.Month, 1);
dt = dt.AddMonths(1).AddDays(-1); //取得一个月的最后一天
if (dt.DayOfWeek >= DayOfWeek.Wednesday)//最后一天的星期几>=星期三时,减少多的天数即可
     dt = dt.AddDays(-((int)dt.DayOfWeek-3));
else                        //最后一天的星期几<星期三时,先提前一个星期加至星期三即可
     dt = dt.AddDays(-7+(3-(int)dt.DayOfWeek));
Console.WriteLine(dt);

解决方案 »

  1.   

    用这样想吗?不是可以从服务器上得到时间吗?只要服务器的时间是对的,给客户显示的时候不就可以显示正确的时间了吗?
    <HEAD>
    <SCRIPT language="JavaScript">
    <!--function startclock()
    {
    var thetime=new Date(<%=DateTime.Now()%>);var nhours=thetime.getHours();
    var nmins=thetime.getMinutes();
    var nsecn=thetime.getSeconds();
    var nday=thetime.getDay();
    var nmonth=thetime.getMonth();
    var ntoday=thetime.getDate();
    var nyear=thetime.getYear();
    var AorP=" ";if (nhours>=12)
        AorP="P.M.";
    else
        AorP="A.M.";if (nhours>=13)
        nhours-=12;if (nhours==0)
       nhours=12;if (nsecn<10)
     nsecn="0"+nsecn;if (nmins<10)
     nmins="0"+nmins;if (nday==0)
      nday="Sunday";
    if (nday==1)
      nday="Monday";
    if (nday==2)
      nday="Tuesday";
    if (nday==3)
      nday="Wednesday";
    if (nday==4)
      nday="Thursday";
    if (nday==5)
      nday="Friday";
    if (nday==6)
      nday="Saturday";nmonth+=1;if (nyear<=99)
      nyear= "19"+nyear;if ((nyear>99) && (nyear<2000))
     nyear+=1900;document.clockform.clockspot.value=nhours+": "+nmins+": "+nsecn+" "+AorP+" "+nday+", "+nmonth+"/"+ntoday+"/"+nyear;setTimeout('startclock()',1000);} //-->
    </SCRIPT>
    </HEAD><BODY><FORM name="clockform">
    Current Time: <INPUT TYPE="text" name="clockspot" size="40">
    </FORM>
    <SCRIPT language="JavaScript">
    <!--
    startclock();
    //-->
    </SCRIPT></BODY>看,是否合你要求
      

  2.   

    不是这样的,是在C#里使用一个函数
    因为我会用javascript去调用ASP.NET中的web service,web service里有两个函数,一个函数是返回服务器的时间。还有一个函数是返回换算好时差的时间,我现在的问题不是在javascript,是在服务端如何去判断这个日期,也就是不会去判断那个“夏令时”,因为想知道那个函数应该怎样写!正如我这个帖子所问的问题一样。
      

  3.   

    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    DateTime dtStart = DateTime.Now;
    dtStart = new DateTime(dtStart.Year, 3, 1,2,0,0,0);
    dtStart = GetDate(dtStart);
    DateTime dtEnd = DateTime.Now;
    dtEnd = new DateTime(dtEnd.Year, 10, 1,3,0,0,0);
    dtEnd = GetDate(dtEnd);
    if(DateTime.Now<=dtEnd&&DateTime.Now>dtStart)
    Console.WriteLine("夏令时");
    else
    Console.WriteLine("冬令时");
    }
    static DateTime GetDate(DateTime dt)
    {
    int intDay = 7; //设置一个月最后一个星期的星期几
    //DateTime dt = DateTime.Now;
    //dt = new DateTime(dt.Year, dt.Month, 1);
    dt = dt.AddMonths(1).AddDays(-1); //取得一个月的最后一天
    if (dt.DayOfWeek >= (DayOfWeek)intDay)
    {
    dt = dt.AddDays(-((int)dt.DayOfWeek-intDay));
    }
    else
    {
    dt = dt.AddDays(-7+(intDay-(int)dt.DayOfWeek));
    }
    Console.WriteLine(dt);
    return dt;
    }
      

  4.   

    感谢dlxuemin(小薛), sjbwylbs(hh)