vba转.net

550903161 2014-01-23 09:32:43
Public Function tx(rq As Variant) As Double
dayue = Choose(Month(rq), 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6)
runri = IIf(IsDate(Year(rq) & "-2-29"), 1, 0)
tx = Year(rq) + (Month(rq) - 1) / 12 + (Day(rq) + dayue + runri) / 365 + (Hour(rq) + Minute(rq) / 60) / (365 * 24)
End Function

-------这个vba公式如何转换成vb.net的写法?
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
78569981 2014-01-26
  • 打赏
  • 举报
回复
多谢wind_cloud2011 再次出手相助!非常感激!
78569981 2014-01-25
  • 打赏
  • 举报
回复
非常感谢wind_cloud2011 !就是这个意思。 另外,我同学问,如果用c#应该如何写这两句: dayue = Choose(Month(rq), 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6) runri = IIf(IsDate(Year(rq) & "-2-29"), 1, 0)
wind_cloud2011 2014-01-25
  • 打赏
  • 举报
回复

  double tt;
        int m;
        public int Choose(int mon)
        {
            switch (mon)
            {
                case 1:
                    m = 0;
                    break;
                case 2:
                    m = 1;
                    break;
                case 3:
                    m = 1;
                    break;
                case 4:
                    m = 2;
                    break;
                case 5:
                    m = 2;
                    break;
                case 6:
                    m = 3;
                    break;
                case 7:
                    m = 3;
                    break;
                case 8:
                    m = 4;
                    break;
                case 9:
                    m = 4;
                    break;
                case 10:
                    m = 5;
                    break;
                case 11:
                    m = 5;
                    break;
                case 12:
                    m = 6;
                    break;
            }
            return m;
        }       
        public double tx(DateTime rq)
        {
            int month = rq.Month;
            int dayue = Choose(month);
            int runri = IsDate(rq.Year + "-2-29") ? 1 : 0;         
            tt = rq.Year + (rq.Month - 1) / 12 + (rq.Day + dayue + runri) / 365 + (rq.Hour + rq.Minute / 60) / (365 * 24);
            return  tt;
        }
        public static bool IsDate(string str)
        {
            if (string.IsNullOrEmpty(str)) return false;
            DateTime date;
            return DateTime.TryParse(str, out date);
        }  
        private void button3_Click(object sender, EventArgs e)
        {   
            string s="2014/11/24 12:30:50";
            DateTime d=Convert.ToDateTime(s) ;
            double db = tx(d);         
        }


78569981 2014-01-24
  • 打赏
  • 举报
回复
多谢楼上两位的回答,但不是我想要的答案啊。rq就是日期啊比如2014/1/24 12:30:50=2014.067136
wind_cloud2011 2014-01-24
  • 打赏
  • 举报
回复

在vb.net里很多与vb差不多
Variant在vb.net里用Object
Day->DateAndTime.Day

        Dim a As Double
        a = tx("2014/1/24  12:30:50")
        Debug.Print(a)

 Public Function tx(ByVal rq As Object) As Double
        Dim dayue, runri
        dayue = Choose(Month(rq), 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6)
        runri = IIf(IsDate(Year(rq) & "-2-29"), 1, 0)
        tx = Year(rq) + (Month(rq) - 1) / 12 + (DateAndTime.Day(rq) + dayue + runri) / 365 + (Hour(rq) + Minute(rq) / 60) / (365 * 24)
    End Function



wind_cloud2011 2014-01-24
  • 打赏
  • 举报
回复
.067136这是秒阿
eaqpi 2014-01-23
  • 打赏
  • 举报
回复
rq是日期吗?希望如何转? rq的格式是什么? dim str as string = rq.tostring("yyMMddhhmmss") ,4位年份就用yyyy,分割符随便添。 上面就能转换了。如果希望得到日期性,就用CDATE就行了。 dim dt as date =cdate(rq)
wind_cloud2011 2014-01-23
  • 打赏
  • 举报
回复
vb.net 直接有日期函数的

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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