我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
LocalDate#toDateMidnight读取的javdoc 如下:
从v1.5开始,建议您避免使用DateMidnight并使用toDateTimeAtStartOfDay(),因为下面有详细说明.
如果默认时区在午夜切换到夏令时,则此方法将引发异常,此LocalDate表示该切换日期.问题是在所需的日期没有午夜这样的时间,因此抛出了这样的例外.
在某些时区中不存在午夜这一事实似乎足以避免DateMidnight完全使用(假设您的代码没有使用已知不具有此DST情况的固定时区,并且永远不需要在其中使用不同的时区未来).
但是,DateMidnight不会弃用,并且DateMidnight类本身的javadoc中没有类似的建议或警告.此外,DateMidnight构造函数愉快地接受即时和时区,使得在给定的一天不存在午夜,而不是投掷IllegalArgumentException类似的LocalDate#toDateMidnight.结果DateMidnight表现为DateTime在一天开始时的时间.
当某个特定日期不存在午夜时,为什么LocalDate#toDateMidnight在DateMidnight构造函数没有的情况下抛出异常?推荐的用例是DateMidnight什么?
我想做一些非常简单的事情,获取一个日期并从中获取下个月的第一天。我尝试过使用日历。这里的日期是日历类型。
Calendar nextMonthFirst = (Calendar)date.clone();
int year = date.get(Calendar.YEAR);
int month = date.get(Calendar.MONTH);
nextMonthFirst.clear();
nextMonthFirst.set(year, month+1,1);
nextMonthFirst.add(Calendar.DAY_OF_MONTH, 0);
return nextMonthFirst
Run Code Online (Sandbox Code Playgroud)
当我使用日期作为 cal.set(2016,11,30); 我得到的输出为 2017-01-01 而不是 2016-12-01。知道我做错了什么吗?
我想要发生什么 - 如果日期(从参数给出)等于该月的最后一天,我希望成本增加10%.即如果dayOfTravel =该月的最后一天
public static double ReturnJourneyCost(int journeyID, int dayOfTravel, int monthOfTravel, int yearOfTravel){
Cost = Double.parseDouble(XMLLoad.load(journeyID, 3));
return Cost;
}
Run Code Online (Sandbox Code Playgroud)