Ваша проблема, я полагаю, в вашей условной логике. Вы предполагаете, что если, например, month == 0 , то вы говорите о величине, которая меньше месяца. Но общее время может включать годы, и все же месяц может выглядеть как 0 . Я думаю, именно поэтому вы видите очевидную случайность.
Я воспроизвел ваши результаты как мог и увидел плохое поведение. Затем я вынул все условные выражения, чтобы всегда печатать все количества, и получил:
0 Years 0 Months 0 Days 0 Hours 4 Minutes 6 Seconds
0 Years 0 Months 0 Days 5 Hours 36 Minutes 38 Seconds
4 Years 4 Months 11 Days 22 Hours 34 Minutes 8 Seconds
358 Years 0 Months 19 Days 2 Hours 24 Minutes 28 Seconds
29360 Years 4 Months 7 Days 8 Hours 56 Minutes 44 Seconds
2407548 Years 10 Months 18 Days 16 Hours 28 Minutes 28 Seconds
197419008 Years 0 Months 0 Days 0 Hours 24 Minutes 12 Seconds
16188359680 Years 0 Months 2 Days 0 Hours 16 Minutes 20 Seconds
Я думаю, что все нулевые значения в результатах приводили к тому, что ваш код использовал неправильные вызовы печати. Я не могу знать наверняка, потому что у меня не было вашего точного количества символов.
Короче говоря, вам нужно проверить, чтобы все большие величины были равны нулю, и не предполагать, что если некоторые величины равны 0, большие тоже должны быть.