VB6 Dateserial到C#等效

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
我正在将旧的VB6代码转换为C#我是一个新手。

LTEMPDAYS = int(Dateserial(Fartdate)+增量,月(StartDate),日(StartDate))))


在C#变量中,我们有:

长LTEMPDAYS;
(随着长期通过增量)
(startdate作为字符串传递)

DateTime Date = convert.todatetime(startdate);

我知道我可以获得date.year,date.month和date.day传递给dateserial类型方法。

但是什么是Dateserial等同于VB6 Dateserial以执行上述并分配给LTEMPDAS?

谢谢。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,732
地点
悉尼,澳大利亚
编程经验
10+
你甚至不需要问这个问题。您正在使用DateTime类型,因此您应该已经读取了该类型的MSDN文档。如果您已经看到,您已经看到了一个需要年,月份和日期值的构造函数,就像Dateserial函数一样。 MSDN文档应始终是您的第一个呼叫港口,并且鉴于通过VS上的帮助菜单几点咔嗒声,没有理由或不使用它的借口。如果您不熟悉类型或成员,则读取该类型或成员的文档。在这种情况下,您想要的信息位于您的指尖,这将是许多其他场合的情况。
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
我提到了我是一个"newbie"?

我在C#上读了很多,并观看了大量的YouTube视频。但是你假设我知道我可以做你所说的话。

对于一个,我不知道我应该深入了解日期时间。我来自VB6世界。我们没有挖到课堂类型。

我在web上搜索了dateserial和c#,没有什么用。你看,我没有将DateTime连接到Dateserial。

无论如何,谢谢你的回复。

:)
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
使困惑

好的,我真的很困惑。

我去了帮助并点击了MSDN论坛。

然后在尝试定位信息的地方单击所有位置后,我注意到一个搜索框并在DateTime中键入,我在开始时没有与Dateserial关联)。

现在我有一个我在智能isense之前已经看到的方法列表,但他们都没有说串行。

阅读所有描述,我注意到竞争对手"serializes"到64位二进制值。但这是VB6中的Dateserial吗?

无论如何,我想我必须创建一个测试vb6应用程序,看看我是否可以尝试苹果来尝试这些方法。

我的原始问题是要了解是否有人知道哪种方法是直接替代Dateserial。获得答案似乎并不像建议那么简单,但我会保持一致。

谢谢。
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
我已经搜索了,花了大量的时间试图为自己回答这个问题。

我的VB6文本代码如下所示:

C#:
Private Sub Command1_Click()
Dim sDate As Date
Dim lDate As Long




    sDate = Text1.Text
    
    lDate = DateSerial(Year(sDate), Month(sDate), Day(sDate))
    
    Text1.Text = lDate




End Sub

然后尝试在C#中精细化一个方法,该方法将返回与VB6示例相同的结果,我尝试了几种方法,包括勾选,如图所示要将DateTime获取到长变量。但这并没有给我与VB6代码相同的长价。

C#:
       private void button1_Click(object sender, EventArgs e)
        {
            DateTime Date;
            long lDate;


            Date = Convert.ToDateTime(textBox1.Text);


            DateTime t = new DateTime(Date.Year, Date.Month, Date.Day);


            lDate = t.Ticks;


            textBox1.Text = Convert.ToString(lDate);


        }

现在我试图找到"easy to find"如此建议地回答这个问题,但认真地,我认为我的问题是那么糟糕。

只是所以你知道,我从来没有问过一个问题,直到我真的很难为自己弄明白。

显然我错过了一些东西。但现在我觉得初学者不应该在这里提出起点的印象。
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,161
地点
挪威
编程经验
10+
Dateserial函数(Visual Basic)表示:
返回代表指定年份,月份和日期的日期值,其中时间信息设置为午夜(00:00:00)。
DateTime.date属性(系统)
Property Value said:
一个具有与此实例相同日期的新对象,并且时间值设置为12:00:00午夜(00:00:00)。
如果您甚至不需要此日期值,则这似乎与您正在寻求的结果是相同的,尽管最初从A / M / D值创建日期值。

从转换为字符串值的日期值,查看各种ToString方法Datetime结构必须提供。
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
你好约翰。

VB6代码返回41618(通过日期时返回一个长变量"12/10/2013")而我似乎无法使用DateTime.Date获取相同的值。

我试过了 ...



ldate = t.date;
ldate = convert.toint64(t.date);

似乎无法获得任何工作。

我正在下载一个VB6到C#转换器,看看它是否可以为我提供一些线索。

谢谢。
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
我不知道是否有相当于VB6 Dateserial()的C#,但是当我使用VB6到C#Converter应用程序时,它提供了如下解决方案:

使用Microsoft.VisualBasic;
使用vb6 = microsoft.visualBasic.Compatibility.vb6.support;

(一定要添加参考)

C#:
       private void button1_Click(object sender, EventArgs e)
        {
            


            system.datetime sdate = datetime.parse("12/10/2013");


            int lDate = Convert.ToInt32(DateAndtime.DateSerial(SDATE.YEAR,SDATE.MONTH,DATEANDTIME.DAY(SDATE)).ToOADate());


            textBox1.Text = lDate.ToString();






        }

这提供了41618的预期产出。

:)
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,732
地点
悉尼,澳大利亚
编程经验
10+
我提到了我是一个"newbie"?

我在C#上读了很多,并观看了大量的YouTube视频。但是你假设我知道我可以做你所说的话。

是的,我假设您能够单击IDE上的帮助菜单。 VB6已经有一个坏名字,所以责备你的事实"from the VB6 world"作为无法使用帮助的原因,没有任何乐趣。您不需要任何编程体验来搜索和阅读文档。
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
也许不是。但是,它已经解决了,回答我的问题并不像只需点击帮助即系所暗示的那么容易。

显然DateTime没有向我提供解决方案,正如您从我的最后一个回复中看到的那样,显示它比这更复杂。

所以要公平,你的初步反应是假设不适用的假设,并且可能更有用而不是暗示我懒惰。

此外,你可以对那些询问他们可以的问题的人说"搜索和阅读文档。"但在某些时候,你只需要停下来问,你不觉得吗?

不管怎么说,还是要谢谢你。
 
Last edited:

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,161
地点
挪威
编程经验
10+
system.datetime sdate = datetime.parse("12/10/2013")
是与之相同的价值
DateAndtime.DateSerial(SDATE.YEAR,SDATE.MONTH,DATEANDTIME.DAY(SDATE))
因此,后者是不必要的。

我首先没有看到你想要转换 integer的日期 (然后将其显示为字符串),但您应该看到DateSerial不做任何事情,但在设置为0的时间内创建日期值,现在没有使用。
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
我只显示它作为一个字符串来查看结果。

整个事情是将我的旧VB6代码转换为C#,因为我试图学习C#,并且没有理由继续返回VB6,因为我很舒服,请在捏。

使用原始的VB6代码,将Dateserial的结果放入一个长变量中。

返回的价值"12/10/2013"假设是41618,因为它被传递给另一个过程作为int。

我一直无法将DateTime的返回值转换为长或int类型,这些类型将为我提供与VB6 Dateserial行的完全相同的结果(41618)。

想法?

谢谢。
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,161
地点
挪威
编程经验
10+
我一直无法将DateTime的返回值转换为长或int类型,这些类型将为我提供与VB6 Dateserial行的完全相同的结果(41618)。
你已经这样做了,你只是为了意识到它。
var.. date = DateTime.Parse("12/10/2013"); // culture dependent string format, for instance US
var oleDate = date.ToOADate(); // value 41618.5
var intDate = Convert.ToInt32(oleDate); // value 41618
 

WebBiz.

成员
加入
2011年10月15日
消息
21
编程经验
10+
那就是我所要求的,了解如何在我的第一个帖子问题中做到这一点,而是通过帮助(根本没有帮助)阅读MSDN。

这是第一次提及使用.tooadate,或使用类型"var"。我正在努力转换错误。

作为一个新手试图学习如何解决这个问题,这就是我希望找到的东西,因为这个解决方案无处可在线搜索中找到。

你会说这只是一个沟通吗? :)

非常感谢你!
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,161
地点
挪威
编程经验
10+
这是第一次提及使用.tooadate,
是你在帖子8中首次提到了对象的方法。
or to use type "var".
var..不是类型,它是一个推断的变量声明,意思是变量获取分配的表达式的类型。 var.. (C# Reference) 我习惯于从VB.NET中键入推断,并继续在C#中使用它,因为我已经对数据类型很好地了解。实际上我首先对C#IDE感到失望,因为我无法通过在vb.net中徘徊像在vb.net中的变量名称,直到我发现在c#中,你必须悬停'var'看它。
 
最佳 底部