所以我目前正在开发一个模拟器,将年份和月份存储为两个单独的变量,如下所示:
static double currentYear = 1;
static double currentMonth = 1;
它更新如下:
if(currentMonth == 12){
currentYear++;
currentMonth = 1;
}else{
currentMonth++;
}
我对DecimalFormat类非常不熟悉,但我知道可以创建一个读取Year:####,Month:##的输出,但我遇到的问题是它必须显然,每12个月增加一年而不是10,就像正常数字一样。 有没有更简单的计算方法,或者我的方式最简单?
答案 0 :(得分: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 ;
}
}
答案 1 :(得分:0)
您可以随时使用时空交易。浪费计算机周期来存储更多数据。 以同样的方式将时间存储在许多计算机上 - UNIX时间戳计算自纪元以来的秒数,然后从中计算日期,以类似的方式存储您的月份和年份。只需使用一个整数来存储总月数,然后输出时只需使用
"Year: " + floor(totalMonths/12) + " Month: " + ((totalMonths % 12) + 1);
其中%是模数运算符(即可以是mod或类似的东西,具体取决于您选择的语言),floor只是一个向下舍入到较低整数的函数。
BTW格式是你可以在互联网上查找的另一个问题,有很多指南。