CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

计算天数的问题

楼主zzmdegm(剑心)2005-05-09 10:29:59 在 .NET技术 / VB.NET 提问

计算一段时间到底是多少天,比如1999-12-21   到2000-3-15之间有多少天。  
   
  其中如何来选定一年是366天还是365天?一个月是30天、31天、28天还是39天等问题? 问题点数:20、回复次数:11Top

1 楼zzmdegm(剑心)回复于 2005-05-09 10:43:47 得分 0

笔误:一个月是30天、31天、28天还是39天等问题?  
   
  应是29天  
   
  呵呵!Top

2 楼icedut(冰-装修进行中)回复于 2005-05-09 10:46:37 得分 10

 
  计算一段时间到底是多少天,比如1999-12-21   到2000-3-15之间有多少天。  
  DateDiff   函数  
  返回一个   Long   值,该值指定两个   Date   值之间的时间间隔数。  
   
  Public   Overloads   Function   DateDiff(   _  
        ByVal   Interval   As   DateInterval,   _  
        ByVal   Date1   As   DateTime,   _  
        ByVal   Date2   As   DateTime,   _  
        Optional   ByVal   DayOfWeek   As   FirstDayOfWeek   =   FirstDayOfWeek.Sunday,   _  
        Optional   ByVal     WeekOfYear   As   FirstWeekOfYear   =   FirstWeekOfYear.Jan1   _  
  )   As   Long  
  -   或   -  
   
  Public   Overloads   Function   DateDiff(   _  
        ByVal   Interval   As   String,   _  
        ByVal   Date1   As   Object,   _  
        ByVal   Date2   As   Object,   _  
        Optional   ByVal   DayOfWeek   As   FirstDayOfWeek   =   FirstDayOfWeek.Sunday,   _  
        Optional   ByVal   WeekOfYear   As   FirstWeekOfYear   =   FirstWeekOfYear.Jan1   _  
  )   As   Long  
  参数  
  Interval    
  必选项。DateInterval   枚举值或   String   表达式,表示要用作   Date1   和   Date2   之间差额单位的时间间隔。    
  Date1、Date2    
  必选。数据类型为   Date。想用于计算的两个日期/时间值。差额为   Date2   的值减去   Date1   的值。调用程序中的两个值都未更改。    
  DayOfWeek    
  可选项。选自   FirstDayOfWeek   枚举的值,该枚举用于指定周的第一天。若未指定,则使用   FirstDayOfWeek.Sunday。    
  WeekOfYear    
  可选项。选自   FirstWeekOfYear   枚举的值,该枚举用于指定年的第一周。若未指定,则使用   FirstWeekOfYear.Jan1。    
  设置  
  Interval   参数可以有以下设置。  
   
  枚举值   字符串   时间差额的单位    
  DateInterval.Day     d   日    
  DateInterval.DayOfYear     y   日    
  DateInterval.Hour     h   小时    
  DateInterval.Minute     n     分钟    
  DateInterval.Month     m   月    
  DateInterval.Quarter     q     季度    
  DateInterval.Second     s   秒钟    
  DateInterval.Weekday     w   周    
  DateInterval.WeekOfYear     ww     日历周    
  DateInterval.Year     yyyy   年    
   
  DayOfWeek   参数可以有以下设置之一。  
   
  枚举值   值   说明    
  FirstDayOfWeek.System     0     系统设置中指定的周的第一天      
  FirstDayOfWeek.Sunday     1     星期日(默认)    
  FirstDayOfWeek.Monday     2     星期一(依照   ISO   8601   标准第   3.17   节)      
  FirstDayOfWeek.Tuesday     3     星期二    
  FirstDayOfWeek.Wednesday     4     星期三    
  FirstDayOfWeek.Thursday     5     星期四    
  FirstDayOfWeek.Friday     6     星期五    
  FirstDayOfWeek.Saturday     7     星期六    
   
  WeekOfYear   参数可以有以下设置。  
   
  枚举值   值   说明    
  FirstWeekOfYear.System     0     系统设置中指定的年的第一周    
  FirstWeekOfYear.Jan1     1     1   月   1   日所在的周(默认)    
  FirstWeekOfYear.FirstFourDays     2     至少有四天属于新年的周(依照   ISO   8601   标准第   3.17   节)    
  FirstWeekOfYear.FirstFullWeek     3     新年的第一个全周    
   
  异常/错误  
  异常类型   错误号   条件    
  ArgumentException   5   无效   Interval。    
  ArgumentException   5   Date   或   DayofWeek   超出范围。    
  InvalidCastException   13   Date1   或   Date2   为无效类型。    
   
  备注  
  可以使用   DateDiff   函数来确定两个日期/时间值之间存在多少指定时间间隔。例如,可以使用   DateDiff   来计算两个日期之间相隔几日,或计算从今天起到年底相隔几周。  
   
  若   DateInterval.DayOfYear   设置了   Interval,则对其的处理和   DateInterval.Day   一样,因为   DayOfYear   作为时间间隔单位是没有意义的。  
   
  若   Interval   被设置为   DateInterval.WeekOfYear,则返回值表示包含   Date1   的周的第一天与包含   Date2   的周的第一天相隔的周数。以下的示例显示了这样所产生的结果与   DateInterval.Weekday   所产生的结果的不同之处。  
   
  Dim   DatTim1   As   Date   =   #1/4/2001#       '   This   is   a   Thursday.  
  Dim   DatTim2   As   Date   =   #1/9/2001#       '   This   is   the   next   Tuesday.  
  '   Assume   Sunday   is   specified   as   first   day   of   the   week.  
  Dim   WD   As   Long   =   DateDiff(DateInterval.Weekday,   DatTim1,   DatTim2)  
  Dim   WY   As   Long   =   DateDiff(DateInterval.WeekOfYear,   DatTim1,   DatTim2)  
  在上述示例中,DateDiff   为   WD   返回   0,因为两日期之间的差额小于七天,而它为   WY   返回   1,因为两个日历周各自的第一天之间相差七天。  
   
  若   Interval   被设置为   DateInterval.Year,则返回值只从   Date1   和   Date2   的年份部分算起。  
   
  因为   Date1   和   Date2   的数据类型为   Date,所以它们所容纳系统计时器上日期和时间值精确到   100   毫微秒。可是,DateDiff   总是将时间间隔数返回成   Long   数据类型值。  
   
  若   Date1   表示的日期和时间比   Date2   的晚,则   DateDiff   返回负数。  
   
  如果有任何参数的值无效,就会发生   ArgumentException   错误。若   Date1   或   Date2   参数的值无法转换为有效   Date   值,则发生   InvalidCastException   错误。  
   
  注意       将   12   月   31   日与来年的   1   月   1   日比较时,即便只过去一天,DateDiff   给   DateInterval.Year、DateInterval.Quarter   或   DateInterval.Month   都返回   1。  
  因为每个   Date   值都由   DateTime   结构支持,所以其方法在查找时间间隔中提供了附加选项。例如,可以在它两个重载窗体的任一个内使用   Subtract   方法。一个窗体将   Date   变量减去   TimeSpan   后返回另一   Date   值;另一个则减去   Date   值后返回   TimeSpan。可以给过程计时,以确定它所花的毫秒数,如下所示:  
   
  Dim   StartTime   As   Date   =   Now       '   Starting   date/time.  
  '   Run   the   process   that   is   to   be   timed.  
  Dim   RunLength   As   System.TimeSpan   =   Now.Subtract(StartTime)  
  Dim   Millisecs   As   Integer   =   RunLength.Milliseconds  
  示例  
  本示例使用   DateDiff   函数显示给定日期和今天的间隔天数。  
   
  Dim   FirstDate,   Msg   As   String       '   Declare   variables.  
  Dim   SecondDate   As   Date  
  FirstDate   =   InputBox("Enter   a   date")  
  SecondDate   =   CDate(FirstDate)  
  Msg   =   "Days   from   today:   "   &   DateDiff(DateInterval.Day,   Now,   SecondDate)  
  MsgBox   (Msg)  
  要求  
  命名空间:Microsoft.VisualBasic  
   
  模块:DateAndTime  
   
  程序集:Microsoft   Visual   Basic   .NET   运行库(位于   Microsoft.VisualBasic.dll   中)  
  Top

3 楼gaiwa(我不是大侠)回复于 2005-05-09 10:56:18 得分 5

用DateDiff,每年的天数可以自动识别.用法可以查看MSDNTop

4 楼zzmdegm(剑心)回复于 2005-05-09 11:01:25 得分 0

ms-help://MS.MSDNQTR.2003FEB.2052/vblr7/html/vafctDateDiff.htmTop

5 楼wuyazhe(wyz&xyl)回复于 2005-05-09 11:03:27 得分 0

好像没这么复杂吧。Top

6 楼jinger007(jinger)回复于 2005-05-09 11:19:07 得分 5

internal   =   DataTime1   -   DataTime2;  
  dt   =   internal.days.tostring();  
  就可以知道这段时间间隔有多少天了  
  每年的天数之类的都可以自动识别的Top

7 楼zzmdegm(剑心)回复于 2005-05-09 18:28:04 得分 0

to:jinger007(jinger)    
   
  你的代码没有完完整,看得有些不明白。  
   
  还有一个问题就是DataTime1   和DataTime2好像不能用运算符“-”吧Top

8 楼hatita(悠远的风景)回复于 2005-05-09 18:49:26 得分 0

DateTime   dt1 =   new   DateTime(1999,12,21);  
  DateTime   dt2 =   new   DateTime(2000,3,15);  
  TimeSpan   ts   =   dt2   -   dt1;  
  int   iCount =   ts.Days;Top

9 楼zzmdegm(剑心)回复于 2005-05-11 16:51:22 得分 0

to:   hatita(悠远的风景)    
  你用的是C#吗,在vb中date之间不能用“-”吧!!!Top

10 楼znjgress(四空和尚)回复于 2005-05-11 20:39:03 得分 0

vbTop

11 楼zzmdegm(剑心)回复于 2005-05-12 12:25:50 得分 0

“TimeSpan   ts   =   dt2   -   dt1;”这句话还是不对啊!Top

相关问题

  • 如何计算天数
  • 计算两个日期间的天数
  • 谁知道计算天数的算法?
  • 怎么计算间隔天数!急!
  • 给定两个日期,计算天数
  • 急_____关于两个时间之间天数的计算问题!!!!!
  • 如何计算两个日期之间的天数,急!!!
  • 求简单的计算天数的VC++算法!
  • delphi中怎样计算datetimepicker获取的天数????????
  • 如何计算任意一个月份的天数呢?

关键词

  • date
  • 间隔
  • 函数
  • dateinterval
  • firstdayofweek
  • firstweekofyear
  • 值
  • datediff
  • weekofyear
  • dattim

得分解答快速导航

  • 帖主:zzmdegm
  • icedut
  • gaiwa
  • jinger007

相关链接

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

广告也精彩

反馈

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