CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

帮我看看关于日期的代码有什么问题?算出的结果好像都不准呀!

楼主cyzzal(cyzzal)2005-02-03 14:59:57 在 .NET技术 / ASP.NET 提问

//输出当前时间是一年中的第几周  
  DateTime   time   =   DateTime.Now;  
  int   d   =   time.DayOfYear;    
  int   week   =   d/7+1;    
  Response.Write(week);    
   
      //结束  
   
   
   
  //输出当前所在周的起始日期和结束日期  
   
  DayOfWeek   weeknum=DateTime.Now.DayOfWeek;  
  int   number;  
   
  switch(weeknum)  
  {  
  case   Sunday:  
  number=0;  
  break;  
  case   Monday:  
  number=1;  
  break;  
  case   Tuesday:  
  number=2;  
  break;  
  case   Wednesday:  
  number=3;  
  break;  
  case   Thursday:  
  number=4;  
  break;  
  case   Friday:  
  number=5;  
  break;  
  case   Saturday:  
  number=6;  
  break;  
  }  
   
  DateTime   firstDate=DateTime.Now.AddDays(0-number);  
  DateTime   endDate=DateTime.Now.AddDays(7-number);  
  Response.Write(firstDate);  
  Response.Write(endDate);  
  //结束 问题点数:100、回复次数:12Top

1 楼cyzzal(cyzzal)回复于 2005-02-03 15:24:03 得分 0

顶Top

2 楼cqzhangq(空空)回复于 2005-02-03 15:33:46 得分 10

1、当然不准了。一年的第一点有可能不是星期日的,你用   除以7的方式肯定是不对的。你要考虑本年第一天是星期几  
  2、看起来好像没错  
   
  Top

3 楼cyzzal(cyzzal)回复于 2005-02-03 15:42:04 得分 0

请大家完善我的代码Top

4 楼trnbo(【没有蛀牙】)回复于 2005-02-03 15:48:28 得分 10

去网上找个日历的javascript代码,参考一下算法就可以了。Top

5 楼trnbo(【没有蛀牙】)回复于 2005-02-03 15:50:38 得分 20

找个还带农历呢,哈哈  
   
  <script>  
  function   addcounter()    
  {  
      var   cnt_po       =   document.getElementById("leftmenu");  
      var   cnt_h3       =   document.createElement("h3");     //   依次创建节点  
      var   cnt_ul       =   document.createElement("ul");  
      var   cnt_div     =   document.createElement("div");  
      var   cnt_img     =   document.createElement("img");  
      cnt_h3.innerText   =   "计数";                 //设置属性  
      cnt_img.setAttribute("src",   "http://okcounter.com/count.html?id=511213&border=0");  
      cnt_img.setAttribute("align",   "absmiddle");  
      cnt_div.setAttribute("align",   "center");  
      cnt_div.appendChild(cnt_img);           //   依次将节点一个一个的附加上去   :)   注意顺序哦  
      cnt_ul.appendChild(cnt_div);  
      cnt_po.appendChild(cnt_h3);  
      cnt_po.appendChild(cnt_ul);  
  }  
  setTimeout("addcounter();",   40);         //   等会儿,差不多页面下载完毕之后,执行之!          
  </script>  
   
  <script     language="JavaScript">  
  var     bsYear;  
  var     bsDate;  
  var     bsWeek;  
  var     arrLen=8; //数组长度  
  var     sValue=0; //当年的秒数  
  var     dayiy=0; //当年第几天  
  var     miy=0; //月份的下标  
  var     iyear=0; //年份标记  
  var     dayim=0; //当月第几天  
  var     spd=86400; //每天的秒数  
   
  var     year1999="30;29;29;30;29;29;30;29;30;30;30;29"; //354  
  var     year2000="30;30;29;29;30;29;29;30;29;30;30;29"; //354  
  var     year2001="30;30;29;30;29;30;29;29;30;29;30;29;30"; //384  
  var     year2002="30;30;29;30;29;30;29;29;30;29;30;29"; //354  
  var     year2003="30;30;29;30;30;29;30;29;29;30;29;30"; //355  
  var     year2004="29;30;29;30;30;29;30;29;30;29;30;29;30"; //384  
  var     year2005="29;30;29;30;29;30;30;29;30;29;30;29"; //354  
  var     year2006="30;29;30;29;30;30;29;29;30;30;29;29;30";  
   
  var     month1999="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"  
  var     month2001="正月;二月;三月;四月;闰四月;五月;六月;七月;八月;九月;十月;十一月;十二月"  
  var     month2004="正月;二月;闰二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"  
  var     month2006="正月;二月;三月;四月;五月;六月;七月;闰七月;八月;九月;十月;十一月;十二月"  
  var     Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";  
   
  var     Ys=new     Array(arrLen);  
  Ys[0]=919094400;Ys[1]=949680000;Ys[2]=980265600;  
  Ys[3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800;  
  Ys[6]=1107878400;Ys[7]=1138464000;  
   
  var     Yn=new     Array(arrLen);             //农历年的名称  
  Yn[0]="己卯年";Yn[1]="庚辰年";Yn[2]="辛巳年";  
  Yn[3]="壬午年";Yn[4]="癸未年";Yn[5]="甲申年";  
  Yn[6]="乙酉年";Yn[7]="丙戌年";  
  var     D=new     Date();  
  var     yy=D.getYear();  
  var     mm=D.getMonth()+1;  
  var     dd=D.getDate();  
  var     ww=D.getDay();  
  if     (ww==0)     ww="<font     color=RED>星期日</font>";  
  if     (ww==1)     ww="星期一";  
  if     (ww==2)     ww="星期二";  
  if     (ww==3)     ww="星期三";  
  if     (ww==4)     ww="星期四";  
  if     (ww==5)     ww="星期五";  
  if     (ww==6)     ww="<font     color=green>星期六</font>";  
  ww=ww;  
  var     ss=parseInt(D.getTime()     /     1000);  
  if     (yy<100)     yy="19"+yy;  
   
  for     (i=0;i<arrLen;i++)  
  if     (ss>=Ys[i]){  
  iyear=i;  
  sValue=ss-Ys[i];                 //当年的秒数  
  }  
  dayiy=parseInt(sValue/spd)+1;                 //当年的天数  
   
  var     dpm=year1999;  
  if     (iyear==1)     dpm=year2000;  
  if     (iyear==2)     dpm=year2001;  
  if     (iyear==3)     dpm=year2002;  
  if     (iyear==4)     dpm=year2003;  
  if     (iyear==5)     dpm=year2004;  
  if     (iyear==6)     dpm=year2005;  
  if     (iyear==7)     dpm=year2006;  
  dpm=dpm.split(";");  
   
  var     Mn=month1999;  
  if     (iyear==2)     Mn=month2001;  
  if     (iyear==5)     Mn=month2004;  
  if     (iyear==7)     Mn=month2006;  
  Mn=Mn.split(";");  
   
  var     Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";  
  Dn=Dn.split(";");  
   
  dayim=dayiy;  
   
  var     total=new     Array(13);  
  total[0]=parseInt(dpm[0]);  
  for     (i=1;i<dpm.length-1;i++)     total[i]=parseInt(dpm[i])+total[i-1];  
  for     (i=dpm.length-1;i>0;i--)  
  if     (dayim>total[i-1]){  
  dayim=dayim-total[i-1];  
  miy=i;  
  }  
  bsWeek=ww;  
  bsDate=yy+"年"+mm+"月";  
  bsDate2=dd;  
  bsYear="农历"+Yn[iyear];  
  bsYear2=Mn[miy]+Dn[dayim-1];  
  if     (ss>=Ys[7]||ss<Ys[0])     bsYear=Yn[7];  
  function     time(){  
  document.write("<table     border='0'     style='font-size:     18pt;     font-family:Tahoma'     cellspacing='0'     width='180'     bordercolor='#cccccc'         height='220'     cellpadding='0'");  
  document.write("<tr><td     align='center'     style='border:     1     solid     #0099ff;padding-top:10px'><b><font     color=#3366cc>"+bsDate+"</font><br><span     style='font-family:     Arial     Black;font-size:18pt;color:#FF0000'>"+bsDate2+"</span><br><br><span     style='FONT-SIZE:     16pt;color:#000000'>");  
  document.write(bsWeek+"</span><br>"+"<hr     width='80'     ></b><font     color=#666666>");  
  document.write(bsYear+"<br>"+bsYear2+"</td></tr></table>");  
  }  
  </script>  
   
  <script>time()</script>Top

6 楼liulxmooo(娃娃)回复于 2005-02-03 15:56:58 得分 10

upTop

7 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-02-03 15:59:17 得分 10

((TimeSpan)(DateTime.Today-new   DateTime(DateTime.Today.Year,1,1))).TotalDays/7Top

8 楼cyzzal(cyzzal)回复于 2005-02-03 16:07:53 得分 0

为什么调试时提示  
  Sunday  
  Monday  
  Tuesday  
  Wednesday  
  Thursday  
  Friday  
  Saturday  
  在类和名字空间中不存在?  
  Top

9 楼Azmore(漂流)回复于 2005-02-03 16:22:02 得分 10

前面加DayOfWeek  
   
  如DayOfWeek.Sunday等Top

10 楼Azmore(漂流)回复于 2005-02-03 16:23:40 得分 10

LoveCherry的方法可行,你根据需要决定是否再+1Top

11 楼cyzzal(cyzzal)回复于 2005-02-03 17:00:28 得分 0

LoveCherry的方法在年内可行  
   
  主要问题是一个周跨两年该怎么判断?Top

12 楼cqzhangq(空空)回复于 2005-02-03 17:16:15 得分 20

天哪,先看看一年的第一天是星期几,然后剩下来的事情不就好办了吗?动动脑筋嘛  
  Top

相关问题

  • ip统计为何不准确?(附原代码,及问题)~~~~~~~~~~~~~~~~~~
  • 为什么JBuilder中代码区总出现光标定位不准的毛病
  • 求助:显示当前阳历日期、星期、阴历日期的代码?
  • 怎么按日期字段为关键字查询?有代码!
  • 怎么用代码改变系统日期格式?
  • 请问怎么才能用代码得到日期呢?
  • 求助!替换日期控件的文本控件代码
  • 求SQL各种日期转换代码大全
  • 求高人改一段代码,日期选择类的
  • 多个表查询,好像这段代码没有问题,可是。。。。

关键词

  • dayofweek
  • datetime
  • 日期
  • number
  • break
  • 结束
  • case
  • response
  • write

得分解答快速导航

  • 帖主:cyzzal
  • cqzhangq
  • trnbo
  • trnbo
  • liulxmooo
  • LoveCherry
  • Azmore
  • Azmore
  • cqzhangq

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo