java - 一种将天数转换为日期的方法
问题描述
向用户请求一个介于 1 和 365 之间的数字。数字代表一年中的天数。显示相应的日期。
我卡在方法calculationDateWithDayNumber
例如:数字 105 应转换为日期 4 月 15 日。我的结果是 2 月 -31 日。它哪里出错了?
public class DateOperations {
private final static String[] MONTHS = {"January", "February", "March", "April", "May", "June", "July", "August",
"September", "October", "November", "December" };
private static final int[] NUMBERDAYS = {31,28,31,30,31,30,31,31,30,31,30,31};
public static String calculationDateWithDayNumber(int day)
{
int month = 0;
for (int i=0; day>=NUMBERDAYS[i] ;i++)
{day=-NUMBERDAYS[i];
++ month;}
String nameMonth = MONTHS[month];
String datum = String.format("%d%s",day, nameMonth);
return datum;
}
}
解决方案
您可以使用 java.time API 轻松完成此操作,使用ofYearDay
. 既然你说数字可以从 1 到 365,你可能假设一个非闰年,所以你可以传递任何非闰年作为第一个参数:
public static String getMonthDayFromDayOfYear(int dayOfYear) {
// 2019 is a non-leap year
LocalDate date = LocalDate.ofYearDay(2019, dayOfYear);
// "ddMMMM" seems to be your desired format
return DateTimeFormatter.ofPattern("ddMMMM").withLocale(Locale.US).format(date);
}
推荐阅读
- c# - 允许在子类中设置,但不允许在另一个子类中设置
- delphi - 类似的颜色到 html
- assembly - 比较两个字符的 ARM 程序集 (ascii)
- linux - MultiBranch 管道 github webhook
- c# - 多个 DAL 的单一接口
- python - 如何在 matplotlib 中注释垂直线?
- reporting-services - SSRS 参数条件语句
- java - MOXy JAXB 无法解组到列表中
- python - 从记录列表中将时间转换为 ISO:BS4 Python
- user-interface - 带有拆分栏的 Javafx BorderPane