java new date()什么意思 java中Date类中的Date(String s)构造方法如何使用
大家好,关于java new date()什么意思很多朋友都还不太明白,今天小编就来为大家分享关于java中Date类中的Date(String s)构造方法如何使用的知识,希望对各位有所帮助!
java中Date类中的Date(String s)构造方法如何使用
new Date(s):分配 Date对象并初始化此对象,以表示字符串 s指出的日期和时间
格式可以是:1970年 1月 1日,00:00:00 GMT
它接受许多语法;特别是它识别 IETF标准日期语法:"Sat, 12 Aug 1995 13:30:00
GMT"。它也了解美国大陆时区缩写,但对于一般用途,应该使用时区偏移量:"Sat, 12 Aug 1995 13:30:00
GMT+0430"(比格林威治子午线晚 4小时 30分)。如果没有指定时区,则假定用本地时区。GMT和 UTC被认为是相同的。
或者把双引号去掉,就是以毫秒形式表示的日期了
Date(long date)
分配 Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970年 1月 1日
00:00:00 GMT)以来的指定毫秒数
java new Date取得是以什么时间为准
数据库默认时区与服务器上不一致。如果服务器时间是你想要的,那么就是数据库时区未设置。一般情况下安装中文版的就会默认给你默认设置为东八区,应该没有问题。我先前这个中间还用了一个中间件才到数据库,但是前台增加与显示结果也都没问题(中间件会负责解析)。这种情况跟客户端一点关系都没有(除非你的Date是JS中的Date那就有关系了)
java计算两个日期之间的天数
在Java开发物流或是其他功能的时候会用到两个日期相差多天的数据,所以整理了一下备用。
调用方式:
代码如下复制代码
long date1= getDateTime("20121201");//可改成自己的日期类型,但以“20121212”这种格式
long date2= getDateTime("20121212");
int day= dateInterval(date1, date2);
System.out.println(day);
具体实现方法调用:
代码如下复制代码
/**
*计算出两个日期之间相差的天数
*建议date1大于 date2这样计算的值为正数
*@param date1日期1
*@param date2日期2
*@return date1- date2
*/
public static int dateInterval(long date1, long date2){
if(date2> date1){
date2= date2+ date1;
date1= date2- date1;
date2= date2- date1;
}
// Canlendar该类是一个抽象类
//提供了丰富的日历字段
//本程序中使用到了
// Calendar.YEAR日期中的年份
// Calendar.DAY_OF_YEAR当前年中的天数
// getActualMaximum(Calendar.DAY_OF_YEAR)返回今年是 365天还是366天
Calendar calendar1= Calendar.getInstance();//获得一个日历
calendar1.setTimeInMillis(date1);//用给定的 long值设置此 Calendar的当前时间值。
Calendar calendar2= Calendar.getInstance();
calendar2.setTimeInMillis(date2);
//先判断是否同年
int y1= calendar1.get(Calendar.YEAR);
int y2= calendar2.get(Calendar.YEAR);
int d1= calendar1.get(Calendar.DAY_OF_YEAR);
int d2= calendar2.get(Calendar.DAY_OF_YEAR);
int maxDays= 0;
int day= 0;
if(y1- y2> 0){
day= numerical(maxDays, d1, d2, y1, y2, calendar2);
}else{
day= d1- d2;
}
return day;
}
/**
*日期间隔计算
*计算公式(示例):
* 20121201- 20121212
*取出20121201这一年过了多少天 d1=天数取出20121212这一年过了多少天 d2=天数
*如果2012年这一年有366天就要让间隔的天数+1,因为2月份有29日。
*@param maxDays用于记录一年中有365天还是366天
*@param d1表示在这年中过了多少天
*@param d2表示在这年中过了多少天
*@param y1当前为2012年
*@param y2当前为2012年
*@param calendar根据日历对象来获取一年中有多少天
*@return计算后日期间隔的天数
*/
public static int numerical(int maxDays, int d1, int d2, int y1, int y2, Calendar calendar){
int day= d1- d2;
int betweenYears= y1- y2;
List<Integer> d366= new ArrayList<Integer>();
if(calendar.getActualMaximum(Calendar.DAY_OF_YEAR)== 366){
System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
day+= 1;
}
for(int i= 0; i< betweenYears; i++){
//当年+ 1设置下一年中有多少天
calendar.set(Calendar.YEAR,(calendar.get(Calendar.YEAR))+ 1);
maxDays= calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
//第一个 366天不用+ 1将所有366记录,先不进行加入然后再少加一个
if(maxDays!= 366){
day+= maxDays;
}else{
d366.add(maxDays);
}
//如果最后一个 maxDays等于366 day- 1
if(i== betweenYears-1&& betweenYears> 1&& maxDays== 366){
day-= 1;
}
}
for(int i= 0; i< d366.size(); i++){
//一个或一个以上的366天
if(d366.size()>= 1){
day+= d366.get(i);
}
}
return day;
}
/**
*将日期字符串装换成日期
*@param strDate日期支持年月日示例:yyyyMMdd
*@return 1970年1月1日器日期的毫秒数
*/
public static long getDateTime(String strDate){
return getDateByFormat(strDate,"yyyyMMdd").getTime();
}
/**
*@param strDate日期字符串
*@param format日期格式
*@return Date
*/
public static Date getDateByFormat(String strDate, String format){
SimpleDateFormat sdf= new SimpleDateFormat(format);
try{
return(sdf.parse(strDate));
}catch(Exception e){
return null;
}
}
例2
代码如下复制代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test16{
/**
*@param args
*@throws ParseException
*/
public static void main(String[] args) throws ParseException{
// TODO Auto-generated method stub
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1=sdf.parse("2012-09-08 10:10:10");
Date d2=sdf.parse("2012-09-15 00:00:00");
System.out.println(daysBetween(d1,d2));
System.out.println(daysBetween("2012-09-08 10:10:10","2012-09-15 00:00:00"));
}
/**
*计算两个日期之间相差的天数
*@param smdate较小的时间
*@param bdate较大的时间
*@return相差天数
*@throws ParseException
*/
public static int daysBetween(Date smdate,Date bdate) throws ParseException
{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal= Calendar.getInstance();
cal.setTime(smdate);
long time1= cal.getTimeInMillis();
cal.setTime(bdate);
long time2= cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
*字符串的日期格式的计算
*/
public static int daysBetween(String smdate,String bdate) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal= Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1= cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2= cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
}
例3
代码如下复制代码
//取得剩余天数
SimpleDateFormat df=new SimpleDateFormat("yyyymmdd");
Date d0=new java.util.Date();
Date d1=df.parse(end_date);
long time0=d0.getTime();
long time1=d1.getTime();
System.out.println((time1-time0)/(1000*60*60*24));
这样算两个时间相差的天数比较好
代码如下复制代码
/**
*计算两个日期之间相差的天数
*
*@param date1
*@param date2
*@return
*/
public static int diffdates(Date date1, Date date2){
int result= 0;
ElapsedTime et= new ElapsedTime();
GregorianCalendar gc1= new GregorianCalendar();
GregorianCalendar gc2= new GregorianCalendar();
gc1.setTime(date1);
gc2.setTime(date2);
result= et.getDays(gc1, gc2);
return result;
}
然后ElapseTime中的方法是:
代码如下复制代码
public int getDays(GregorianCalendar g1, GregorianCalendar g2){
int elapsed= 0;
GregorianCalendar gc1, gc2;
if(g2.after(g1)){
gc2=(GregorianCalendar) g2.clone();
gc1=(GregorianCalendar) g1.clone();
} else{
gc2=(GregorianCalendar) g1.clone();
gc1=(GregorianCalendar) g2.clone();
}
gc1.clear(Calendar.MILLISECOND);
gc1.clear(Calendar.SECOND);
gc1.clear(Calendar.MINUTE);
gc1.clear(Calendar.HOUR_OF_DAY);
gc2.clear(Calendar.MILLISECOND);
gc2.clear(Calendar.SECOND);
gc2.clear(Calendar.MINUTE);
gc2.clear(Calendar.HOUR_OF_DAY);
while(gc1.before(gc2)){
gc1.add(Calendar.DATE, 1);
elapsed++;
}
return elapsed;
}
其实使用joda最简单
代码如下复制代码
public boolean isRentalOverdue(DateTime datetimeRented){
Period rentalPeriod= Period.days(2);
return datetimeRented.plus(rentalPeriod).isBeforeNow()
}
在java中,类名 x = new类名(); 后面这个new类名是什么意思
“对象名=new类名()”意思是创建名称为“对象名”的“类名”类引用变量。
“new类名()”就是说以无参数构造方法实例化对象。
java的new关键字想必大家都知道这是实例化一个对象,也是为新对象分配内存空间。
比如new MyDate(22,7,1964)这样一个案例,完成需要四部:
一、为新对象分配内存空间,将MyDate存储到堆。
二、执行显示的初始化。
三、执行构造器。new方法中括号参数传递给构造器,出书话该对象数值。
四、该变量被赋值为堆内存中新对象的引用。
关于java new date()什么意思的内容到此结束,希望对大家有所帮助。