以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]日期  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=96947)

--  作者:苏州老街
--  发布时间:2017/3/2 19:28:00
--  [求助]日期
老师,我想把日也拆分出来。
If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("年") = Nothing
        e.DataRow("月") = Nothing
        e.DataRow("日") = Nothing
        e.DataRow("季") = Nothing
    Else
        Dim d As Date = e.NewValue
        If d.Month = 12 And d.day >= 23 Then
            e.DataRow("年") = d.Year +1
        Else
            e.DataRow("年") = d.Year
        End If
        If d.Day < 23 Then
           e.DataRow("月") = d.Month
        Else
            e.DataRow("月") = (d.Month + 0) Mod 12
        End If
        If d.day > 22 Then
            e.DataRow("季") = DatePart("q",d.AddDays(10))
        Else
            e.DataRow("季") = DatePart("q",d)
        End If
    End If
End If





--  作者:有点色
--  发布时间:2017/3/2 20:06:00
--  

If d.Day < 23 Then
    Dim pd As Date = d.AddMonths(-1)  
    pd = new Date(d.Year, d.Month, 22)  
    e.DataRow("日") = (d - pd).totalDays
Else
    e.DataRow("日") = d.Day - 22
End If

[此贴子已经被作者于2017/3/2 20:06:22编辑过]

--  作者:苏州老街
--  发布时间:2017/3/2 20:20:00
--  
老师,数据前面多了个(-)负数。



图片点击可在新窗口打开查看此主题相关图片如下:图像 1.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/3/2 20:26:00
--  

改一下

 

If d.Day < 23 Then
    Dim pd As Date = d.AddMonths(-1)  
    pd = new Date(pd.Year, pd.Month, 22)  
    e.DataRow("日") = (d - pd).totalDays
Else
    e.DataRow("日") = d.Day - 22
End If


--  作者:苏州老街
--  发布时间:2017/3/2 20:30:00
--  
老师,"日“列数据不对。11变19了
--  作者:苏州老街
--  发布时间:2017/3/2 20:38:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:图像 2.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/3/2 20:57:00
--  
  没毛病啊,你按照23号结算,11号,就是19号
--  作者:苏州老街
--  发布时间:2017/3/2 21:09:00
--  
老师,那上面的代码要全部修改吗?
--  作者:有点色
--  发布时间:2017/3/2 21:21:00
--  

 提取年月日,直接取

 

d.Year d.Month d.Day 就行啊。你有看懂过代码吗?

 

 季度这样获取 Math.Ceiling(d.Month / 3)