【问题标题】:How to get the days for the date如何获取日期的天数
【发布时间】:2012-11-03 12:19:17
【问题描述】:

第 1 部分

Dim totdays as long
totdays = DateDiff("d", "01/2011", DateAdd("m", 1, "01/2011"))

以上代码将返回“31”

我想知道那 31 天

预期输出

Monday (31/01/2011)

需要 VB6 代码帮助

第 2 部分

我想查找特定月份的星期日....

例如,如果我选择月份 01/2012,查询应该给出这样的结果

01
08
15
22
29

以上日期为星期日。

01/2012 月的预期输出

01
08
15
22
29

【问题讨论】:

    标签: vba vb6


    【解决方案1】:

    类似的东西(在 中测试)

    周日子查询的最终更新

    根据下面 Gopal 评论中的要求

        Dim strDate As String
        Dim dtStart As Date
        Dim dtEnd As Date
        Dim stEnd As Date
        Dim lngCnt As Long
        Dim strOut As String
        strDate = "01/2012"
        dtStart = DateValue(strDate)
        dtEnd = DateAdd("d", DateDiff("d", strDate, DateAdd("m", 1, strDate) - 1), dtStart)
        lngCnt = Weekday(dtStart) - 7
        Do
            lngCnt = lngCnt + 7
            strOut = strOut & Format(lngCnt, "00") & vbNewLine
        Loop While lngCnt + 7 <= dtEnd - dtStart
        MsgBox strOut
    

    更新

    请注意,我需要使用 lngdays-1 来添加少于一个月的 1 天(即 2011 年 1 月 31 日),否则结果会是 2011 年 2 月 1 日

    Dim strDate As String
    Dim lngdays As Long
    strDate = "01/2011"
    lngdays = DateDiff("d", strDate, DateAdd("m", 1, strDate))
    MsgBox Format(DateAdd("d", lngdays - 1, strDate), "dddd (dd/mm/yyyy)")
    

     Dim lngdays As Long
     lngdays = DateDiff("d", "01/2011", DateAdd("m", 1, "01/2011"))
     MsgBox Format(DateSerial(2011, 1, lngdays), "dddd (dd/mm/yyyy)")
    

    【讨论】:

    • 我无法输入 2011,1,它来自像这样的文本框“01/2011”
    • 非常感谢您的帮助,还有一件事,我怎样才能找到一个月的星期天。例如,如果我选择 01/2011,从 2011 年 1 月起,有多少个星期天,我想找到......你能帮我看看吗.....
    • @Gopal - 你的意思是 2011 年 1 月有多少个星期日? Anf 你不是在这里问过吗stackoverflow.com/q/8698621/641067
    • @Gopal 我认为您应该提出单独的问题,而不是稍后添加更多子查询,因为您的初始问题是我的答案将针对它量身定制的它也提高了您的机会,即在您之前的问题中,我无法为您提供列表请求,其他发帖人可能会错过您问题的这个新部分
    • @JP 我只知道当有人编辑我自己的帖子时 :) 尝试 {tag:vba} 并将“{”和“}”替换为“[”和“]”
    【解决方案2】:

    像这样使用格式化函数。这里我使用的是 Now 但你可以传递任何日期和格式返回字符串的日期名称

    Format(Now, "dddd")
    

    【讨论】:

      【解决方案3】:

      您可以使用VB6中的DateSerial函数将字符串或整数变量转换为日期变量

      Dim d As String
      Dim datevar As Date
      d = "31"
      datevar = DateSerial(2011,1, Val(d))   
      MsgBox Format(datevar,"DDDD dd/MMM/yyyy")
      

      【讨论】:

      • 我编辑了这个,所以我可以删除我的反对票 - 我不记得为什么我首先这样做了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多