64050


vbを使っています。  
a="2020/02/07"とb="2020/02/06"の引き算をして"1日"という結果を得たいです。

まず、Date.parse(a.Tostring)を使ってDatetime型に変換しました。  
次に、Date.parse(a.Tostring)-Date.parse(b.Tostring)でtimespan型を得ました。  
これをexcelに出力すると"737461"という値が表示されました。

１つ目の質問ですが、この"737461"が何なのか分かりませんでした。秒かなとも思ったのですが、１日を秒に変換すると86400秒なので違うようです。  
教えていただければ幸いです。  
２つ目の質問は、この数字をどのように変換すれば"1日"になるのでしょうか？  
ご指導よろしくお願いいたします。


CC BY-SA 4.0
2020-03-23T12:12:40.337
64046
2020-03-23T14:26:15.733
34450
question
vb.net
vbでDatetimeの差分の求め方


質問内容をVisualStudio2019のVisualBasicコンソールプログラムにすると以下(最初のDim 3行)のようになるでしょう。  
Excelに出力では無く単に文字列化して表示すると：

[code]

    Sub Main()
        Dim a = "2020/02/07"
        Dim b = "2020/02/06"
        Dim ts = Date.Parse(a.ToString()) - Date.Parse(b.ToString())
    
        Console.WriteLine("TimeSpan = " + ts.ToString())
        Console.WriteLine("")
        Console.WriteLine("TimeSpan Days = " + ts.Days.ToString())
        Console.WriteLine("TimeSpan Hours = " + ts.Hours.ToString())
        Console.WriteLine("TimeSpan Minutes = " + ts.Minutes.ToString())
        Console.WriteLine("TimeSpan Seconds = " + ts.Seconds.ToString())
        Console.WriteLine("TimeSpan MilliSeconds = " + ts.Milliseconds.ToString())
        Console.WriteLine("")
        Console.WriteLine("TimeSpan TotalDays = " + ts.TotalDays.ToString())
        Console.WriteLine("TimeSpan TotalHours = " + ts.TotalHours.ToString())
        Console.WriteLine("TimeSpan TotalMinutes = " + ts.TotalMinutes.ToString())
        Console.WriteLine("TimeSpan TotalSeconds = " + ts.TotalSeconds.ToString())
        Console.WriteLine("TimeSpan TotalMilliSeconds = " + ts.TotalMilliseconds.ToString())
        Console.WriteLine("TimeSpan Ticks = " + ts.Ticks.ToString())
        Console.WriteLine("")
    
        Console.ReadLine()
    End Sub
    
[/code]

結果は以下になります。

[code]

    TimeSpan = 1.00:00:00
    
    TimeSpan Days = 1
    TimeSpan Hours = 0
    TimeSpan Minutes = 0
    TimeSpan Seconds = 0
    TimeSpan MilliSeconds = 0
    
    TimeSpan TotalDays = 1
    TimeSpan TotalHours = 24
    TimeSpan TotalMinutes = 1440
    TimeSpan TotalSeconds = 86400
    TimeSpan TotalMilliSeconds = 86400000
    TimeSpan Ticks = 864000000000
    
[/code]

"737461"という数字は何処にも出てこないので、「これをexcelに出力すると"737461"という値が表示されました。」という
**excelに出力する** 処理に何か問題があるのではないでしょうか？

**日単位の差分** は、元のデータが日単位ならば **Days** / **TotalDays**
のどちらでも、時分とか含まれる可能性がある場合、時分を切り捨てなら **Days** 、時分の端数込みなら **TotalDays**
のプロパティ値を(必要なら文字列化して)利用すれば良いでしょう。


CC BY-SA 4.0
2020-03-23T13:12:22.483
64050
2020-03-23T14:26:15.733
2020-03-23T14:26:15.733
26370
26370
64046
answer