JAVA:int month = n.get(Calendar.MONTH)+1;为何要加1?
2011-12-22 21:39
716 查看
import java.util.*; public class DateClass { public static void main(String args[ ]) { Date m = new Date( ); System.out.println("现在是:"+m.toString( )); Calendar n = Calendar.getInstance( ); int year = n.get(Calendar.YEAR); int month = n.get(Calendar.MONTH)+1; int day = n.get(Calendar.DATE); int week = n.get(Calendar.DAY_OF_WEEK)-1; Date t = n.getTime ( ); String week1 = new String("日一二三四五六"); String week2=week1.substring(week, week+1); String x = new String( ); x = "现在是:"+year+"年"+month+"月"+day+"日,星期"+week2; System.out.println("现在是:"+t); System.out.println(x); } } 解析: 1 MONTH加1的原因: public static final int MONTH 指示月份的 get 和 set 的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。 简单来说,因为这个值的初始值是0,因此我们要用它来表示正确的月份时就需要加1。 2 WEEK减1的原因: public static final int DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY 观察代码,你会发现其实week是用来确定随后的字符串week1该如何截取的,我们知道DAY_OF_WEEK是获取当前日期是一周中的第几天,而一周从周日算起,因此当我们取得这个值之后,为了要正确的截取出随后的字符串week1中的那个中文字符,因此它需要减1来达到目的。你只要跟踪一下程序运行,观察变量的赋值就会理解它这样编写的用意了。 3 定义day时不用的原因: public static final int DATE get 和 set 的字段数字,指示一个月中的某天。它与 DAY_OF_MONTH 是同义词。一个月中第一天的值为 1。 根据定义我们可以知道,这个值取得后不需要做任何变更就是程序需要的值。 4 substring(week, week+1): public String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。 根据定义,我们就知道这个方法的用途了。举例来说,假如今天是星期四,那么之前获得的week的值就是4,因为我们取到了DAY_OF_WEEK(这里是5)后又减了1,然后我们用这个变量week来帮助我们截取字符串week1,这里调用了substring(4,5),所以取到的字符就是“四,正是我们需要的字符。
相关文章推荐
- JAVA:int month = calendar.get(Calendar.MONTH)+1;为何要加1?
- Java通过cal.get(Calendar.MONTH)比真实月份少了一个月
- 遇到的问题----java中获取当前月份c.get(Calendar.MONTH)中月份少一个月
- 遇到的问题----java中获取当前月份c.get(Calendar.MONTH)中月份少一个月
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- java LinkedList ArrayList 随机访问效率 list.get(int index)
- java.util.Calendar.getTime()方法实例
- java中byte转换int时为何与0xff进行与运算
- java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getImporta..
- java中byte转换int时为何与0xff进行与运算
- java 中byte转int为何要与0xff进行与运算 c 和java右移运算区别
- JAVA-calendar.add(Calendar.Month,1):1月31号加一月是多少号?
- 自动生成set javabean如(rs.getInt("field"))
- [转]java中byte转换int时为何与0xff进行与运算
- java cal.get(Calendar.DATE)和Calendar.DATE的区别
- java中byte转换int时为何与0xff进行与运算
- Andrdoi 如何获得某个月份最后一天(或号数最大那天)的号数?--使用getActualMaximum(Calendar.DAY_OF_MONTH)!