我正在添加这个问题,因为我是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
在java.util.Date:
* In all methods of class <code>Date</code> that accept or return
* year, month, date, hours, minutes, and seconds values, the
* following representations are used:
* <ul>
* <li>A year <i>y</i> is represented by the integer
* <i>y</i><code>-1900</code>.
Run Code Online (Sandbox Code Playgroud)
当然,在Java 1.1中,getYear()方法等被弃用了java.util.Calendar,这仍然有这个奇怪的弃用说明:
int getYear()
Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.YEAR) - 1900.
setYear(int year)
Deprecated. As of JDK version 1.1, replaced by Calendar.set(Calendar.YEAR, year + 1900).
Run Code Online (Sandbox Code Playgroud)
当然,以月为0基础,但我们都知道(虽然你认为他们已经解决了这个问题Calendar- …
我试图让年,月和日形成一个Date对象,但以下给我一些完全随机的东西:
Date d = new Date();
System.out.println(d.getYear() + " - " + d.getMonth() + " - " + d.getDay());
Run Code Online (Sandbox Code Playgroud)
我得到:112 - 9 - 1
有谁知道为什么?你有一个更好的apporch?对于我的程序,我需要Date对象.
在Android应用程序中,我尝试使用以下代码检索当前月份和年份.
setMonth(Calendar.getInstance().getTime().getMonth());
setYear(Calendar.getInstance().getTime().getYear());
System.out.println("MONTH sssssssssss:" + Month);
System.out.println("YEAR ssssssssssss:" + Year);
Run Code Online (Sandbox Code Playgroud)
输出是
04-20 16:36:43.723: I/System.out(4718): MONTH sssssssssss:3
04-20 16:36:43.723: I/System.out(4718): YEAR ssssssssssss:114
Run Code Online (Sandbox Code Playgroud)
有人可以帮我纠正一年的价值吗?
我正在尝试从日期获取年份,并且Calendar.get(Calendar.YEAR)我获得3917年而不是2017年?但是,当我尝试检查输出时,date.getYear()它将返回正确的年份。
Date date = new Date(year, month, day);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Log.d(TAG, "onClick: year "+date.getYear());
Log.d(TAG, "onClick: year "+calendar.get(Calendar.YEAR));
Run Code Online (Sandbox Code Playgroud)
输出:
onClick:2017年
onClick:3917年
日期类显示正确的年份,但日历显示错误的年份