Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]如何判断一个日期为第几周?

李妮  发表于:2009-04-18 10:12:08  
复制

大家好!

  能不能判断一个日期是几月几周?比如4月17号是4月3周这样?谢谢大家! 

 

Top
豆豆 发表于:2009-04-18 16:09:09
MsgBox "第" & Day(#4/17/2009#) \ 7 + IIf(Day(#4/17/2009#) Mod 7 > 0, 1, 0) & "周"


ACMAIN.CHM 发表于:2009-04-18 23:23:03
这个问题不太容易答对, 请问
2009-04-18 是四月第几周?
2009-04-19 是四月第几周?
 
假设 2009-04-18 是第三周,2009-04-19 是第四周
 
可以利用公式如下。
 
ddate = #2009-04-17#
?((day(ddate)-1)\7+1) + ((day(ddate)-1) mod 7 + weekday(ddate-day(ddate)+1)-1)\7
 3
 
ddate = #2009-04-18#
?((day(ddate)-1)\7+1) + ((day(ddate)-1) mod 7 + weekday(ddate-day(ddate)+1)-1)\7
 3
 
ddate = #2009-04-19#
?((day(ddate)-1)\7+1) + ((day(ddate)-1) mod 7 + weekday(ddate-day(ddate)+1)-1)\7
 4
 
ddate = #2009-04-01#
?((day(ddate)-1)\7+1) + ((day(ddate)-1) mod 7 + weekday(ddate-day(ddate)+1)-1)\7
 1
 
ddate = #2009-04-30#
?((day(ddate)-1)\7+1) + ((day(ddate)-1) mod 7 + weekday(ddate-day(ddate)+1)-1)\7
 5
 
ddate = #2009-05-01#
?((day(ddate)-1)\7+1) + ((day(ddate)-1) mod 7 + weekday(ddate-day(ddate)+1)-1)\7
 1


**************
*   一切皆有可能   *
**************


ACMAIN - Access论坛回贴准则(个人)


QQ群 48866293 / 12035577 / 7440532 / 13666209
http://www.accessbbs.cn/bbs/index.php
http://www.accessoft.com/bbs/index.asp
http://www.office-cn.net/vvb/?fromuid=141646
http://www.access-programmers.co.uk/forums

http://www.office-cn.net/home/space.php?uid=141646


听风 发表于:2009-04-18 23:59:37

算某日期是某月的第几周感觉有难度啊,主要难度来自于"周跨月"的问题。

以下代码我在自已的电脑上试过,似乎输出结果还算是正确的。若有发现1)结果不对;2)代码有错;3)代码太啰索;4)其他问题,敬请帮我指出,多谢了。

 

Option Compare Database
Option Explicit

'以下均假设星期一为一个星期的第一天。若设星期日为一个星期的第一天,则相关代码相应调整。
Public Function wm()
    Dim thedate As Date, n As Date, n0 As Integer, w As Integer, n1 As Integer, n2 As Integer
    thedate = InputBox("日期(格式:YYYY-MM-DD)", "请输入:") '用INPUTBOX输入日期
    n = DateValue(DateSerial(Year(thedate), Month(thedate), 1))    '返回当月第一天"
    n0 = thedate - n
    w = Weekday(n, vbMonday)
    If w = 1 Then  '当月第一天为星期一的情形
        n1 = n0 \ 7 + 1
    Else   '当月第一天为星期二至星期日的情形
        If n0 < (7 - w + 1) Then
            n1 = 1
        Else
            n1 = (n0 - (7 - w + 1)) \ 7 + 2
        End If
    End If
    n2 = DatePart("m", thedate) '取月份
    MsgBox n2 & "月" & n1 & "周", vbOKOnly, "输入的日期是:" '用MSGBOX输出结果
End Function



总记录:3篇  页次:1/1 9 1 :