需两种!
一种是判断完整星期的第几个星期几!
另一种是判断是当前的第几个星期几,不管完不完整的星期。
PS:共100分每个问题50分!
一种是判断完整星期的第几个星期几!
另一种是判断是当前的第几个星期几,不管完不完整的星期。
PS:共100分每个问题50分!
解决方案 »
- 如何读取某一列里的多个字符串,并显示在datacombo组件的下拉菜单里
- 软件编写接近尾声,请问要做哪些后续工作?
- 我的程序在循环中会退出IDE,是不是溢出问题,什么导致溢出问题呢
- timer>start+pauseTime 无法延时啊
- 字符串变量允许的最大长度和两个字符串的相减问题!!!!
- 自定义的控件如何接受容器控件的单击事件。
- 如何在ftp://218.93.12.179中下载
- WINSOCK问题,高手请帮忙解决!!!
- 中文MSDN2008下载地址
- 华山论剑
- 这儿人气比较高--救人啊,关于Project 2003 ,Project Web Access 和Project Server 2003中设置权限的问题---在线等
- 在datareport中,如何显示图片
{
FILETIME ft;
SYSTEMTIME st;
BOOL f; GetSystemTime(&st); // gets current time
SystemTimeToFileTime(&st, &ft); // converts to file time format
。 return f;
}SYSTEMTIME
The SYSTEMTIME structure represents a date and time using individual members for the month, day, year, weekday, hour, minute, second, and millisecond. typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
Members
wYear
Specifies the current year. The year must be greater than 1601.
Windows XP: The year cannot be greater than 30827. wMonth
Specifies the current month; January = 1, February = 2, and so on.
wDayOfWeek
Specifies the current day of the week; Sunday = 0, Monday = 1, and so on.
wDay
Specifies the current day of the month.
wHour
Specifies the current hour.
wMinute
Specifies the current minute.
wSecond
Specifies the current second.
wMilliseconds
Specifies the current millisecond.
具体思路如下:
1、先得出当前是星期几,然后做判断,若当前为周一(假设以周一为第一天),前面天数为7的倍数n,当前为n+1个完整的星期的星期一,否则为n个完整星期的星期一
2、道理相似,只是判断要多一些
代码略
Dim MyDate As Date
MyDate = Now
FirstDate = Format(MyDate, "yyyy-mm-03")
'不完整的星期
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek) + 1
'完整的星期
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek)
FirstDate = Format(MyDate, "yyyy-mm-01")
------------------------------------------------------
Print DateDiff("d", CDate(Format(Date, "yyyy-mm")), Date) \ 7 + 1一种是判断完整星期的第几个星期几!
----------------------------------
先请问楼主,#2004-10-1#在你这个问题中的答案是什么?
Dim MyDate As Date
MyDate = Now
FirstDate = Format(MyDate, "yyyy-mm-01")
n = Weekday(FirstDate)
'不完整的星期
If n = 1 Then
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek) + 1
Else
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek)
End If
'完整的星期
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek)
1:以那一天为基准日?
2:(Optional) 要找的是星期几?若不指定,预设值为星期六
3:(Optional) 要往前 (过去) 找或往后 (未来) 找?
若不指定,预设值为往后 (未来) 找
程序码
Public Function SpecificWeekday(ByVal D As Date, Optional ByVal WhatDay As VbDayOfWeek = vbSaturday, Optional GetNext As Boolean = True) As Date
SpecificWeekday = (((D - WhatDay + GetNext) \ 7) - GetNext) * 7 + WhatDay
End Function
或许您想知道程序为什么这样写?您知道吗?在 VB 中,其所有日期函数的基准日 (第0天) 是 1899年12月30日 (星期六),第一天就是 1899年12月31日 (星期日),所以 VB 的 WeekDay 函数算法其实就是 (Date - 1) Mod 7 + 1。返回值
日期实例 :
我想知道以下日子各是那一天?
上个星期一:SpecificWeekday(Now, vbMonday, False)
下个星期六:SpecificWeekday(Now)
2000年9月9日的下一个星期五:SpecificWeekday("09/09/2000", vbFriday)
Dim FirstDate As Date
Dim MyDate As Date
MyDate = "2004-10-1"
FirstDate = Format(MyDate, "yyyy-mm-01")
n = Weekday(FirstDate)
'不完整的星期
If n <> 1 Then
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek) + 1
Else
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek)
End If
'完整的星期
MsgBox DateDiff("ww", FirstDate, MyDate, vbUseSystemDayOfWeek, vbFirstFullWeek)
Private Sub Command1_Click()
MsgBox GetPartWeekNum(CDate("2004-10-29"))
End SubPublic Function GetPartWeekNum(ByVal dtCur As Date) As Integer
Dim dtF As Date, intBw As Integer
dtF = CDate(Year(dtCur) & "-" & Month(dtCur) & "-1")
intBw = DateDiff("d", dtF, dtCur)
GetPartWeekNum = intBw \ 7 + 1
End Function