黑马程序员技术交流社区

标题: 关于求前一天当前时刻的Date的相关问题 [打印本页]

作者: breaveheart    时间: 2013-8-7 08:43
标题: 关于求前一天当前时刻的Date的相关问题
本帖最后由 杨兴庭 于 2013-8-7 17:59 编辑

  1. <P>import java.util.*;
  2. import java.text.*;
  3. class DateTest1
  4. {
  5. public static void main(String[] args)
  6. {
  7. Date d = new Date();
  8. //今天的这个时刻
  9. SimpleDateFormat sdf = new SimpleDateFormat("M月d日 hh:mm:ss");
  10. String timetoday = sdf.format(d);
  11. System.out.println(" Today's time : "+timetoday);

  12. Calendar c = Calendar.getInstance();
  13. c.add(Calendar.DAY_OF_MONTH,-1);
  14. System.out.print("Yesterday's Time : "+(int)(c.get(Calendar.MONTH)+1)+"月");</P>
  15. <P>//关于上一句输出的问题实验了好久,请问下这里为什么要进行+1操作?还有,如果我不进行Int强制转换为什么会是把1转换成字符串加上去呢?
  16. System.out.print(c.get(Calendar.DAY_OF_MONTH)+"日");
  17. SimpleDateFormat sdf1 = new SimpleDateFormat("hh:mm:ss");
  18. String timeyesterday = sdf1.format(d);
  19. System.out.println(" "+timeyesterday);
  20. }
  21. }
  22. </P>
复制代码

问题如上面代码的注释出。求高手指点{:soso_e154:}


作者: 心灵之歌    时间: 2013-8-7 08:48
<P>import java.util.*;
import java.text.*;
class DateTest1
{
public static void main(String[] args)
{
Date d = new Date();
//今天的这个时刻
SimpleDateFormat sdf = new SimpleDateFormat("M月d日 hh:mm:ss");
String timetoday = sdf.format(d);
System.out.println(" Today's time : "+timetoday);

Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH,-1);
System.out.print("Yesterday's Time : "+(int)(c.get(Calendar.MONTH)+1)+"月");</P>
<P>//关于上一句输出的问题实验了好久,请问下这里为什么要进行+1操作?还有,如果我不进行Int强制转换为什么会是把1转换成字符串加上去呢?////+1是因为这个函数类是外国人写好的,别人就是这么设计。你要用,就得这样。    如果不+一个数字,它这里默认是字符串。所以需要转换!
System.out.print(c.get(Calendar.DAY_OF_MONTH)+"日");
SimpleDateFormat sdf1 = new SimpleDateFormat("hh:mm:ss");
String timeyesterday = sdf1.format(d);
System.out.println(" "+timeyesterday);
}
}
</P>
复制代码


作者: breaveheart    时间: 2013-8-7 10:17
心灵之歌 发表于 2013-8-7 08:48
import java.util.*;
import java.text.*;
class DateTest1

谢谢,前面的月份问题明白了。但是给给的1没加双引号,它为什么会自动打包变成String类呢?我不太了解这个原理。。。
作者: jrry    时间: 2013-8-7 12:26
注意下你的输出语句,System.out.print("Yesterday's Time : "+(int)(c.get(Calendar.MONTH)+1)+"月");,要知道你输出的是一个String字符串,这样看你就明白了。
  1. int month = c.get(Calendar.MONTH) + 1;
  2. String string ="Yesterday's Time : "+month + "月";
  3. System.out.print(string);
  4. //实际上你加了(int)并不是强制转换,因为c.get(Calendar.MONTH)为int型,1也为int型,无需转换,
  5. //加了(int)后相当于优先运算这两个int。因为如果不加的就是这样
  6. //String str = "Yesterday's Time : " + c.get(Calendar.MONTH) + 1 + "月";  可以看出这是字符串相加,会把int数据转换成String
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2