大牛们, 帮我看看这个问题啊
我时间格式是一定的, yyyyMMddHHmmss, 不能是其他的
我把时间分别以不同单位转化, 5分钟,1小时和一天
现在问题是, 5分钟和1小时的都可以, 但是一天的就多了8小时
请你们解决: 代码如下:
package cn.wang.test;import java.text.SimpleDateFormat;
import java.util.Date;public class Test { /**
* 把日期形式改变成指定的格式
* @param date
* @return 指定格式
*/
public static String dateFormat(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String dateStr = null;
try {
dateStr = sdf.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
} public static void main(String[] args){
/* int i=1;
do {
System.out.println(i);
i ++;
} while (10 >= i);*/
Date date = new Date();
long fiveMinute = (date.getTime() / 300000) * 300000;
long oneHour = (date.getTime() / (1000 * 3600)) * (1000 * 3600);
long oneDay = (date.getTime() /(1000 * 3600 * 24)) * (1000 * 3600 * 24);
Date dateFive = new Date(fiveMinute);
Date dateHour = new Date(oneHour);
Date dateDay = new Date(oneDay);
System.out.println("Five minutes: " + dateFormat(dateFive));
System.out.println("One hour: " + dateFormat(dateHour));
System.out.println("One day: " + dateFormat(dateDay));
}
}实际输出如下: Five minutes: 20100722103500
One hour: 20100722100000
One day: 20100722080000
希望输出如下: Five minutes: 20100722103500
One hour: 20100722100000
One day: 20100722000000
我时间格式是一定的, yyyyMMddHHmmss, 不能是其他的
我把时间分别以不同单位转化, 5分钟,1小时和一天
现在问题是, 5分钟和1小时的都可以, 但是一天的就多了8小时
请你们解决: 代码如下:
package cn.wang.test;import java.text.SimpleDateFormat;
import java.util.Date;public class Test { /**
* 把日期形式改变成指定的格式
* @param date
* @return 指定格式
*/
public static String dateFormat(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String dateStr = null;
try {
dateStr = sdf.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
} public static void main(String[] args){
/* int i=1;
do {
System.out.println(i);
i ++;
} while (10 >= i);*/
Date date = new Date();
long fiveMinute = (date.getTime() / 300000) * 300000;
long oneHour = (date.getTime() / (1000 * 3600)) * (1000 * 3600);
long oneDay = (date.getTime() /(1000 * 3600 * 24)) * (1000 * 3600 * 24);
Date dateFive = new Date(fiveMinute);
Date dateHour = new Date(oneHour);
Date dateDay = new Date(oneDay);
System.out.println("Five minutes: " + dateFormat(dateFive));
System.out.println("One hour: " + dateFormat(dateHour));
System.out.println("One day: " + dateFormat(dateDay));
}
}实际输出如下: Five minutes: 20100722103500
One hour: 20100722100000
One day: 20100722080000
希望输出如下: Five minutes: 20100722103500
One hour: 20100722100000
One day: 20100722000000
Date testDate = new Date(testTime);
System.out.println("One day: " + dateFormat(testDate ));得到的结果就是19700101080000
int a = 10;
int b = 3;
System.out.println(10/3); 这个等于多少
我是想知道为什么, 不是要去手动把8小时去掉
要去掉我还不如用 yyyyMMdd000000呢?
所以, 懂我的意思了?
谢谢大家, 我也考虑过5楼的问题, 不过, 不知道解决办法
10/3 * 3 = ?数学里面,我们都知道是等于10
然后JAVA里面
我认为你是知道等于9的
20100722000000, 或者201007230000, 而把分钟和秒钟给截掉了,
但是格式必须是 yyyyMMddHHmmss, 我在转换成‘5分钟’, ‘小时’为单位的时候没有问题
但是到‘天’就多了把小时, 不知道为什么,
不知道你东没有懂啊?
Date nowDate = new Date();
long longDate = nowDate.getTime()/1000/60/60/24;
Calendar calendar = new GregorianCalendar();
Date newDate = new Date(longDate*1000*60*60*24);
calendar.setTime(newDate);
calendar.set(Calendar.HOUR, 0);
DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(f.format(calendar.getTime()));
我看GregorianCalendar比较符合你胃口
GregorianCalendar(Locale aLocale)
忘了还有这么2个构造器,用上的话,可以废掉calendar.set(Calendar.HOUR, 0);
咱在东8区, 20100722080000 是北京时间, GMT就是0点