Как вычесть даты в формате ГГГГММДД? - PullRequest
1 голос
/ 12 мая 2010

У меня есть 2 целочисленных поля, которые представляют даты в формате ГГГГММДД. Каков наилучший способ вычесть 2 из этих полей, чтобы получить правильное количество дней между ними?

Например, если я возьму разницу между 20100511 и 20100428, я бы хотел, чтобы результат был 13, а не 83. Я знаю, что мне нужно преобразовать целочисленные поля в форматы даты, но все, что я пробовал, выдает исключение или не не работает правильно.

Чего мне не хватает? Ответы в vb.net пожалуйста

Ответы [ 4 ]

8 голосов
/ 12 мая 2010

Это должно быть что-то вроде этого (не проверено!)

Dim date1 As DateTime = DateTime.ParseExact(yourdate1.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture)
Dim date2 As DateTime = DateTime.ParseExact(yourdate2.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture)
Dim days As Integer = date1.Subtract(date2).Days
4 голосов
/ 12 мая 2010

Код избыточного количества ...

// C#

var ds1 = 20100511;
var ds2 = 20100428;

Func<int, DateTime> getDate = s => DateTime.ParseExact(s.ToString(),
                                                       "yyyyMMdd",
                                                       null);

var d1 = getDate(ds1);
var d2 = getDate(ds2);

var diff = d1.Subtract(d2);
var result = diff.Days; //13

...

//VB.Net

Dim ds1 = 20100511
Dim ds2 = 20100428

Dim getDate = Function(s) DateTime.ParseExact(s.ToString(), "yyyyMMdd", Nothing)

Dim d1 = getDate(ds1)
Dim d2 = getDate(ds2)

Dim diff = d1.Subtract(d2)
Dim result = diff.Days '13
2 голосов
/ 12 мая 2010
    Dim dt1 As Integer = 20100510
    Dim dt2 As Integer = 20100520
    Dim date1 As DateTime = DateTime.ParseExact(dt1.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture)
    Dim date2 As DateTime = DateTime.ParseExact(dt2.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture)
    Dim nDays As Integer = date1.Subtract(date2).Days
0 голосов
/ 27 января 2014
 DateTime x = DateTime.ParseExact("19920715", "yyyyMMdd",CultureInfo.InvariantCulture);
            DateTime y = DateTime.ParseExact("20141025", "yyyyMMdd", CultureInfo.InvariantCulture);
            int days = (y.Subtract(x).Days);
            float years = days / 365;
...