请教日期转换,急!!!!!!!!!!

别让人生输给心情 2014-05-24 12:10:22
例:4 15 A
4------2014年
15----第15周
A----15周所在的那个月里的第10天
A所在的第4位是表示天数,由1开始到9,然后第10天由A表示,11天由B表示,一直累加到31天

现在要将这4位数转化为日期,请教当一个周跨度2个月的时候要怎么处理,急!多谢各位了
...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 of123 的回复:
假定你星期所在的月,是以星期一所在的月为定义的。
Dim tmp As Date, result As Date
Dim strData As String, strItem() As String
Dim my_year As Integer, my_month As Integer, my_day As Integer

strData = "4 15 A"
strItem = Split(strData, " ")

my_year = Val("201" & strItem(0))
If strItem(2) < "9" Then
    my_day = Val(strItem(2))
Else
    my_day = Asc(UCase(strItem(2))) - 55
End If
    
tmp = DateAdd("ww", Val(strItem(1)), my_year & "-1-1")
tmp = tmp - Weekday(tmp, vbTuesday)

my_month = Month(tmp)

result = DateSerial(my_year, my_month, my_day)

MsgBox result
非常感谢 !帮了大忙了
of123 2014-05-26
  • 打赏
  • 举报
回复
假定你星期所在的月,是以星期一所在的月为定义的。
Dim tmp As Date, result As Date
Dim strData As String, strItem() As String
Dim my_year As Integer, my_month As Integer, my_day As Integer

strData = "4 15 A"
strItem = Split(strData, " ")

my_year = Val("201" & strItem(0))
If strItem(2) < "9" Then
    my_day = Val(strItem(2))
Else
    my_day = Asc(UCase(strItem(2))) - 55
End If
    
tmp = DateAdd("ww", Val(strItem(1)), my_year & "-1-1")
tmp = tmp - Weekday(tmp, vbTuesday)

my_month = Month(tmp)

result = DateSerial(my_year, my_month, my_day)

MsgBox result
  • 打赏
  • 举报
回复
不知道怎样才能输入这样4个字符 然后自动转成日期
  • 打赏
  • 举报
回复
怎么根据周所在月的第几天来算这是哪个月呢 !有点糊涂
笨狗先飞 2014-05-24
  • 打赏
  • 举报
回复
用dateadd来处理,可以加天,也可以加周,用Month函数还可以取到月,
舉杯邀明月 2014-05-24
  • 打赏
  • 举报
回复
如果某周跨月,确实有点“歧义”。
但这是你的“算法”,具体的规则是你决定。
先分别计算第N周的第1天在哪月(这看你自己的要求:第1天是星期一还是星期天)?
最后一天在哪月?
如果月份相同,自然好说。
如果不同,就是跨月的了。
这个“月”,取前一月的,还是后一月的,你自己看着办!
月份确定下来了,“第几天”的日期,自然也确定了。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧