日期:2014-05-16  浏览次数:20326 次

JAVA 时间 和 js里面时间的区别
JAVA 里面处理时间时,只要按照format格式去解析时间,结果都是正确的。

二JS里面 format 格式不一样 解析的时间结果都是不一样的。


以下代码没有去封装,直接看吧!

// format yyyy-MM-dd HH:mm:ss/yyyyMMddHHmmss/ yyyyMMdd / yyyy/MM/dd
		DateFormat dateFormat = null;
		String format = "yyyy/MM/dd";
		String stime = null;
		Date dstime = null;
		
		System.out.println("Date.parse(\"Jul 8, 2005\")" + " " +Date.parse("Jul 8, 2005"));
		
		format = "yyyy/MM/dd";
		stime = "2005/07/08";
		dateFormat = new SimpleDateFormat(format, Locale.CHINA);
		dstime = dateFormat.parse(stime);
		System.out.println(format + " " + stime + " " +dstime.getTime());
		
		format = "yyyy-MM-dd";
		stime = "2005-07-08";
		dateFormat = new SimpleDateFormat(format, Locale.CHINA);
		dstime = dateFormat.parse(stime);
		System.out.println(format + " " + stime + " " +dstime.getTime());
		 
		format = "yyyyMMdd";
		stime = "20050708";
		dateFormat = new SimpleDateFormat(format, Locale.CHINA);
		dstime = dateFormat.parse(stime);
		System.out.println(format + "     " + stime + " " +dstime.getTime());



结果:
Date.parse("Jul 8, 2005") 1120752000000
yyyy/MM/dd 2005/07/08 1120752000000
yyyy-MM-dd 2005-07-08 1120752000000
yyyyMMdd     20050708 1120752000000

结论:时间都一致。


js:
使用 parse() 来输出从 2005/07/08 到一个具体日期的毫秒数

<html>
<body>

<script type="text/javascript">

var d = Date.parse("Jul 8, 2005");
document.write(d); //1120752000000

d = Date.parse("2005/07/08");
document.write('---------' + d); //1120752000000

d = Date.parse("2005-07-08");
document.write('---------' + d);//1120780800000

d = Date.parse("20050708");
document.write('---------' + d);//NaN

</script>

</body>
</html>


结果:


1120752000000---------1120752000000---------1120780800000---------NaN 
结论:Jul 8, 2005 和 2005/07/08 时间一样,其他的不一样。


所以:
JS里面 Date.parse( time ) 只能解析YYYY/MM/DD类型的时间。

function compareDate(d1, d2) { // 时间比较的方法,如果d1时间比d2时间大,则返回true  
	  return Date.parse(d1.replace(/-/g, "/")) >= Date.parse(d2.replace(/-/g, "/"))  
	}
 

d1 ,d2 只能传 YYYY-MM-DD 或者 YYYY/MM/DD  类型的时间 而不能 传入 YYYYMMDD的时间类型