以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]根据周别返回日期 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192117) |
-- 作者:qq51837000 -- 发布时间:2024/5/29 19:09:00 -- [求助]根据周别返回日期 老师,请问如何根据给定的年份和周别返回这一周的日期,代码怎么写? 如:给定2023年第36周,如何写代码得到这一周的第一天或最后一天?
|
-- 作者:hongsejiyi -- 发布时间:2024/5/29 21:14:00 -- Dim n As Integer = 36 \'周次 For i As Integer = 1 To DatePart("ww", New Date(2024, 12, 31)) Dim d As Date = New Date(2024, 1, 1) d = d.AddDays(7 * (i - 1)) If i = n Then Output.Show(cexp("第{0}周的第1天{1},最后一天{2}", n, d, d.AddDays(6))) End If Next
|
-- 作者:hongsejiyi -- 发布时间:2024/5/29 21:14:00 -- 运行结果: 第36周的第1天2024-09-02,最后一天2024-09-08 |
-- 作者:qq51837000 -- 发布时间:2024/5/30 0:03:00 -- 感谢回答,但这个好象不对吧,你这是从1月1日开始按7天相乘得到的结果,不准确 |
-- 作者:cd_tdh -- 发布时间:2024/5/30 8:56:00 -- Dim d As Date = Date.Today Output.Show(d.DayOfWeek),通过当天是星期几反算吧
|
-- 作者:有点蓝 -- 发布时间:2024/5/30 9:02:00 -- Dim year As Integer = 2024 Dim week As Integer = 1 Dim d As Date = New Date(year, 1, 1) Dim w = d.DayOfWeek Dim startdate As Date Dim Enddate As Date Select Case week Case 0 startdate = d Enddate = d.AddDays(7 - w - 1) Case 53 startdate = d.AddDays(7 - w).AddDays(7 * 51) Enddate = d.AddYears(1).AddDays( - 1) Case Else startdate = d.AddDays(7 - w).AddDays(7 * (week - 2)) Enddate = startdate.AddDays(6) End Select Output.Show(startdate & "-" & Enddate)
[此贴子已经被作者于2024/5/30 9:18:49编辑过]
|
-- 作者:cd_tdh -- 发布时间:2024/5/30 9:09:00 -- mark |
-- 作者:qq51837000 -- 发布时间:2024/5/30 9:45:00 -- 怎样写成带year和week两个参数的自定义函数? |
-- 作者:有点蓝 -- 发布时间:2024/5/30 9:53:00 -- Dim year As Integer = args(0) Dim week As Integer = args(1)
|
-- 作者:qq51837000 -- 发布时间:2024/5/30 10:23:00 -- 谢谢老师 [此贴子已经被作者于2024/5/30 14:36:45编辑过]
|