-3

私は2つの日付を持っているとしましょう:

Date.Now :#8/10/2013 10:53:46 PM#

2 番目の日付はファイルの作成日です。

#7/10/2011 9:57:58 PM#

私は次のようなことをしたい: Date.Now - FileDate.

これは私のコードです:

Dim ddd As TimeSpan = Date.Now - SecondDate

タイムスパンに「年」プロパティはありません。(年プロパティはあるべき2 2013 - 2011 = 2ですが、日のプロパティがあります - しかし、年と月を取得する必要があります)

アップデート:

みんなありがとう、でも私は関数を作成しました:

Public Class Timee
        Private _Days As Integer
        Public Property Days() As Integer
            Get
                Return _Days
            End Get
            Set(ByVal value As Integer)
                _Days = value
            End Set
        End Property
        Private _Months As Integer
        Public Property Months() As Integer
            Get
                Return _Months
            End Get
            Set(ByVal value As Integer)
                _Months = value
            End Set
        End Property
        Private _Years As Integer
        Public Property Years() As Integer
            Get
                Return _Years
            End Get
            Set(ByVal value As Integer)
                _Years = value
            End Set
        End Property
    End Class
    Public Function GetTimeBetween(ByVal datee As Date, ByVal datee2 As Date) As Timee
        Dim tt As TimeSpan = datee - datee2
        Dim dd11 As Integer = tt.Days
        Dim bb1 As Integer
        Dim Month As Integer
        Dim Years1 As Integer
        Do Until dd11 <= 0
            bb1 = dd11
            dd11 = dd11 - 365
            Years1 = Years1 + 1
        Loop
        Years1 = Years1 - 1
        Dim Dayss As Integer
        Do Until bb1 <= 0
            Dayss = bb1
            bb1 = bb1 - 30
            Month = Month + 1
        Loop
        Dim tt1 As New Timee
        tt1.Days = Dayss
        tt1.Months = Month
        IF Years1 < 0 Then
           Years1 = 0
        End IF
        tt1.Years = Years1
        Return tt1
    End Function

それが誰かを助けたことを願っています。

4

5 に答える 5

1

DateTime.Parse("date as a string") を使用して、両方を DateTime オブジェクトに変換できます。次に、DateTime.Subtract http://msdn.microsoft.com/en-us/library/8ysw4sby.aspxを使用 する必要があります。次に、http://msdn.microsoft で調べることができる必要な TimeSpan があります。 com/en-us/library/system.timespan_methods.aspx TotalDays プロパティを 365 で割ると、年数を取得できます (以下の公正な課題に注意してください)。月の計算はより複雑になります。

于 2013-08-10T20:06:51.510 に答える
1

C# コード:

DateTime secondDate = ...;
var ddd = DateTime.Now - secondDate;
var days = ddd.TotalDays;

すべての年または月の日数が同じではないため、「年」または「月」を取得することはできません。

別:

var now = DateTime.Now;
var totalYears = now.Year - secondDate.Year;

if (secondDate.Month > now.Month || (secondDate.Month == now.Month && secondDate.Day > now.Day))
{
    totalYears--;
}

var months = now.Month - secondDate.Mont;

if (secondDate.Day > now.Day)
{
    months--;
}

if (months < 0)
{
    months = 12 + months;
}
于 2013-08-10T20:11:48.327 に答える
0
Dim ddd As New DateTime((Date.Now - SecondDate).Ticks)

あるいは、Jon Skeet のNoda Timeライブラリにそのための関数があります。

于 2013-08-10T20:08:48.953 に答える
0

構造が単純で、文化と開始点と終了点によって 1 年が異なるため、TimeSpan年はありません。TimeSpanこれはうまくいくはずです:

Dim zeroTime As New DateTime(1, 1, 1)
Dim a = #8/10/2013 10:53:46 PM#
Dim b = #7/10/2011 9:57:58 PM#

Dim span As TimeSpan = a - b
Dim years As Integer = (zeroTime + span).Year - 1  

また、それをサポートする Jon Skeet のNoda-Timeもご覧ください。

于 2013-08-10T20:11:33.293 に答える