2013-11-19 4 views
-1

Так что я в настоящее время работает на тренажере, который хранит годы и месяцы, как двух отдельных переменных, например, так:Как считать месяцы и годы одной переменной?

static double currentYear = 1; 
static double currentMonth = 1; 

И он обновляет так:

if(currentMonth == 12){ 
currentYear++; 
currentMonth = 1; 
}else{ 
currentMonth++; 
} 

Я довольно знаком с класс DecimalFormat, но я знаю, что можно было бы создать вывод, который читал Year: ####, Month: ##, но проблема, с которой я сталкиваюсь, состоит в том, что для этого нужно было бы, очевидно, добавить год каждые двенадцать месяцев вместо этого из десяти, как обычные цифры. Есть ли более простой способ вычислить это или мой путь самый простой?

+4

Почему вы отметили его как sql? статический двойной не в sql !!! –

+0

Я не знаю, это рекомендовано sql, и я действительно не знал, что еще отметить его, так что да, я прошу прощения. – Sam

+0

Это было бы действительно удивительно для многих людей здесь, что вы не знаете язык, на котором вы столкнулись с проблемой или в которой вы кодируете! –

ответ

0

Вы всегда можете использовать деловую сферу. Отработайте компьютерные циклы для хранения большего количества данных. Точно так же время хранится на многих компьютерах - отметка времени UNIX, которая подсчитывает количество секунд с эпохи, а затем вы вычисляете дату из нее, таким же образом вы можете хранить свои месяцы и годы. Просто используйте одно целое, чтобы сохранить общее количество месяцев, а затем при выводе просто использовать

"Year: " + floor(totalMonths/12) + " Month: " + ((totalMonths % 12) + 1); 

Где% является оператором модуля (т.е. может быть мода или что-то подобное в зависимости от вашего языка выбора) и пол просто функция, которая округляется до нижнего целого.

BTW форматирование - еще одна проблема, которую вы можете найти в Интернете, множество руководств для нее.

1

Создайте индивидуальный тип, чтобы представить свою продолжительность в течение нескольких лет и месяцев. Что-то вроде этого:

class YearMonthDuration 
{ 
    private int durationInMonths ; 

    public int Years { get { return durationInMonths/12 ; } } 
    public int Months { get { return durationInMonths % 12 ; } } 

    public YearMonthDuration(int years , int months) 
    { 
    this.durationInMonths = years * 12 + months ; 
    return ; 
    } 

    public static explicit operator int(YearMonthDuration instance) 
    { 
    return instance.Years*100 + instance.Months ; 
    } 

    public override string ToString() 
    { 
    return string.Format("Years={0}/Months={1}" , Years , Months) ; 
    } 

    public YearMonthDuration AddYears(int years) 
    { 
    durationInMonths += years*12 ; 
    return this ; 
    } 
    public YearMonthDuration AddMonths(int months) 
    { 
    durationInMonths += months ; 
    return this ; 
    } 

} 
Смежные вопросы