java 获取当前日期,应该如何 *** 作呢

java 获取当前日期,应该如何 *** 作呢,第1张

package util;

import javamathBigDecimal;

import javatextParseException;

import javatextSimpleDateFormat;

import javautilCalendar;

import javautilDate;

/

获取系统时间

/

public class DateUtil {

/ 日志对象 /

// private static Logger logger = LoggergetLogger(SystemUtilclass);

/ 获取年份 /

public static final int YEAR = 1;

/ 获取年月 /

public static final int YEARMONTH = 2;

/ 获取年月日 /

public static final int YEARMONTHDAY = 3;

/ 获取年月日,小时 /

public static final int YMD_HOUR = 4;

/ 获取年月日,小时,分钟 /

public static final int YMD_HOURMINUTE = 5;

/ 获取年月日,时分秒 /

public static final int FULL = 6;

/ 获取年月日时分秒 格式:yyyyMMddHHmmss /

public static final int UTILTIME = 7;

/

根据指定时间格式类型得到当前时间

@param type

时间类型

@return String 字符串时间

/

public static synchronized String getCurrentTime(int type) {

String format = getFormat(type);

SimpleDateFormat timeformat = new SimpleDateFormat(format);

Date date = new Date();

return timeformatformat(date);

}

/

返回当前系统时间的年月日

@return

/

public static synchronized String getCurrentTime() {

SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd");

Date date = new Date();

return timeformatformat(date);

}

/

根据参数格式,格式化当前日期

@param format

@return

/

public static synchronized String getDateString(String format) {

SimpleDateFormat timeformat = new SimpleDateFormat(format);

Date date = new Date();

return timeformatformat(date);

}

/

根据指定时间格式类型,格式化时间格式

@param type

时间格式类型

@return

/

private static String getFormat(int type) {

String format = "";

if (type == 1) {

format = "yyyy";

} else if (type == 2) {

format = "yyyy-MM";

} else if (type == 3) {

format = "yyyy-MM-dd";

} else if (type == 4) {

format = "yyyy-MM-dd HH";

} else if (type == 5) {

format = "yyyy-MM-dd HH:mm";

} else if (type == 6) {

format = "yyyy-MM-dd HH:mm:ss";

} else if (type == 7) {

format = "yyyyMMddHHmmss";

} else {

throw new RuntimeException("日期格式参数错误");

}

return format;

}

public static int getYear(String dateString) {

SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");

Date date = null;

try {

date = ddparse(dateString);

Calendar cal = CalendargetInstance();

calsetTime(date);

return calget(CalendarYEAR);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

public static int getMonth(String dateString) {

SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");

Date date = null;

try {

date = ddparse(dateString);

Calendar cal = CalendargetInstance();

calsetTime(date);

return calget(CalendarMONTH)+1;

} catch (Exception e) {

throw new RuntimeException(e);

}

}

public static int getDay(String dateString) {

SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");

Date date = null;

try {

date = ddparse(dateString);

Calendar cal = CalendargetInstance();

calsetTime(date);

return calget(CalendarDAY_OF_MONTH);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

public static Date StringToDate(String dateStr, String formatStr) {

SimpleDateFormat dd = new SimpleDateFormat(formatStr);

Date date = null;

try {

date = ddparse(dateStr);

} catch (ParseException e) {

eprintStackTrace();

}

return date;

}

/

当前日期和参数日期距离的小时数 日期格式:yyyy-MM-dd HH:mm:ss

@param date

@return

/

public static double getHours(String date) {

SimpleDateFormat timeformat = new SimpleDateFormat(

"yyyy-MM-dd HH:mm:ss");

try {

Date d = new Date();

Date d1 = timeformatparse(date);

long temp = dgetTime() - d1getTime();

double f = temp / 3600000d;

BigDecimal b = new BigDecimal(f);

double f1 = bsetScale(2, BigDecimalROUND_HALF_UP)doubleValue();

return f1;

} catch (Exception e) {

eprintStackTrace();

throw new RuntimeException(e);

}

}

public static void main(String a[]) {

try {

int aa = getYear("2012-01-08");

Systemoutprintln(aa);

} catch (Exception e) {

eprintStackTrace();

}

}

}

取得时间类

1、Date ,Systemoutprintln(new date());

2、calendar 此类是抽象类,要想实例化,需要实例化子类GregorianCalendar

看看jdk的API中给了相应的方法:注意月份需要加1;

有时候希望对格式进行转换。

SimpleDateFormat类 此类在javatext包下

1、准备原格式,2、准备新格式 3、转化

String str = "2011-09-11 16:35:06";

SimpleDateFormat sd = new SimpleDateFormate("yyyy-MM-dd HH:mm:ss");

SimpleDateFormat sd2 = new SimpleDateFormate("yyyy

年MM月dd日 HH时mm分ss秒")

//然后进行转化

Date d = sdparse(str);

将时间数插入sd2上

String newStr = sd2format(d);

Systemoutprintln(newStr);

import javatextSimpleDateFormat;

import javautilCalendar;

public class DataTest {

public static void main(String[] args) {

printWeekdays();

}

private static final int FIRST_DAY = CalendarMONDAY;

private static void printWeekdays() {

Calendar calendar = CalendargetInstance();

setToFirstDay(calendar);

for (int i = 0; i < 7; i++) {

printDay(calendar);

calendaradd(CalendarDATE, 1);

}

}

private static void setToFirstDay(Calendar calendar) {

while (calendarget(CalendarDAY_OF_WEEK) != FIRST_DAY) {

calendaradd(CalendarDATE, -1);

}

}

private static void printDay(Calendar calendar) {

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd EE");

Systemoutprintln(dateFormatformat(calendargetTime()));

}

}

一:字段和方法的信息

YEAR 字段:

public static final int YEAR ;

指示年的 get 和 set 的字段数字。这是一个特定于日历的值;

get 方法:

public int get(int field) ;

返回给定日历字段的值。在 lenient 模式下,所有日历字段都被标准化。在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,则此方法抛出一个异常。标准化和验证都是通过 complete() 方法处理的,这个过程与日历系统有关。

参数:field - 给定的日历字段。

返回:给定日历字段的值。

抛出:ArrayIndexOutOfBoundsException - 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT)。

详细资料可以参考JDK API的javautilCalendar

二:Calendar 类详解

Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为 *** 作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00000,格里高利历)的偏移量。

1、使用Calendar类别之前,要先知道Calendar的一些方法取回的数字是对应于Calendar本身的常数,也就是说并不是取回1 这个数字,就表示今天是星期一。

a、想要取得时间,首先使用Calendar的getInstance()取得一个Calendar的实例,例如:

Calendar rightNow = CalendargetInstance();

b、如果现在您想知道是几年,则可以使用get()方法并指定常数,例如:

Systemoutprintln(rightNowget(CalendarYEAR));

c、如果是2005年,则上例会显示2005的数字,依照这个例子,假设撰写本文的时间是5月份,而现在想使用程式取得月份,则下例可能会有些困惑:

Systemoutprintln(rightNowget(CalendarMONTH));

d、程式会显示4这个数字,而不是预期的5,因为传回的4并不是代表月份,而是对应于CalendarMAY常数的值, Calendar在月份上的常数值从CalendarJANUARY开始是0,到CalendarDECEMBER的11,所以如果想要显示传回值的真正意涵,可以如下撰写:

String[] months = {"一月", "二月", "三月", "四月","五月", "六月", "七月", "八月","九月", "十月", "十一月", "十二月"};

Calendar rightNow = CalendargetInstance();

Systemoutprintln(months[rightNowget(CalendarMONTH)]);

2、初始值

代码如下,值得指出的是由于我们的时区设置是GMT+8,所以打印格林威治时间得到的是1970-01-01 08:00:00

Calendar cal = CalendargetInstance();//得到当前时间

calsetTimeInMillis(0);//转换成格林威治时间

3、获取值

calget(CalendarYEAR);//年

calget(CalendarMONTH) + 1;//月(必须要+1)

calget(CalendarDATE);//日

calget(CalendarHOUR_OF_DAY);//时

calget(CalendarMINUTE);//分

calget(CalendarSECOND);//秒

calget(CalendarDAY_OF_WEEK);//星期(LocaleENGLISH情况下,周日是1,剩下自己推算)

如果拿时间不是为了计算而是展示出来,肯定用SimpleDateFormart了,模式为yyyy-MM-dd HH:mm:ss

4、设置值

calset(2013, 5, 4, 13, 44, 51);//年月日时分秒(月份0代表1月)

calset(CalendarYEAR, 2014);//年

calset(CalendarMONTH, 7);//月(月份0代表1月)

calset(CalendarDATE, 11);//日

calset(CalendarHOUR_OF_DAY, 15);//时

calset(CalendarMINUTE, 33);//分

calset(CalendarSECOND, 32);//秒

5、运算值

caladd(CalendarYEAR, 1);//年

caladd(CalendarMONTH, 1);//月

caladd(CalendarDATE, 1);//日

caladd(CalendarHOUR_OF_DAY, -1);//时

caladd(CalendarMINUTE, 1);//分

caladd(CalendarSECOND, 1);//秒

caladd(CalendarDATE, 7);//周

public static int getWorkDays(Date begin,Date end){

Calendar calendar = CalendargetInstance();

int sum = 0;

calendarsetTime(begin);

while(calendargetTime()before(end)){

int t = calendarget(CalendarDAY_OF_WEEK);

if(t != CalendarSUNDAY && t != CalendarSATURDAY){

sum ++;

}

calendaradd(CalendarDAY_OF_YEAR, 1);

}

return sum;

}

这只是个方法,你传入开始日期和结束日期返回工作日的天数。

你把这个方法放到需要使用的地方,然后在该class上面加上

import javautilCalendar;

import javautilDate;

有两种方法:

方法一:用javautilDate类来实现,并结合javatextDateFormat类来实现时间的格式化,看下面代码:

import javautil;

import javatext;

//以下默认时间日期显示方式都是汉语语言方式

//一般语言就默认汉语就可以了,时间日期的格式默认为MEDIUM风格,比如:2008-6-16 20:54:53

//以下显示的日期时间都是再Date类的基础上的来的,还可以利用Calendar类来实现见类TestDate2java

public class TestDate {

public static void main(String[] args) {

Date now = new Date();

Calendar cal = CalendargetInstance();

DateFormat d1 = DateFormatgetDateInstance(); //默认语言(汉语)下的默认风格(MEDIUM风格,比如:2008-6-16 20:54:53)

String str1 = d1format(now);

DateFormat d2 = DateFormatgetDateTimeInstance();

String str2 = d2format(now);

DateFormat d3 = DateFormatgetTimeInstance();

String str3 = d3format(now);

DateFormat d4 = DateFormatgetInstance(); //使用SHORT风格显示日期和时间

String str4 = d4format(now);

DateFormat d5 = DateFormatgetDateTimeInstance(DateFormatFULL,DateFormatFULL); //显示日期,周,时间(精确到秒)

String str5 = d5format(now);

DateFormat d6 = DateFormatgetDateTimeInstance(DateFormatLONG,DateFormatLONG); //显示日期。时间(精确到秒)

String str6 = d6format(now);

DateFormat d7 = DateFormatgetDateTimeInstance(DateFormatSHORT,DateFormatSHORT); //显示日期,时间(精确到分)

String str7 = d7format(now);

DateFormat d8 = DateFormatgetDateTimeInstance(DateFormatMEDIUM,DateFormatMEDIUM); //显示日期,时间(精确到分)

String str8 = d8format(now);//与SHORT风格相比,这种方式最好用

Systemoutprintln("用Date方式显示时间: " + now);//此方法显示的结果和CalendargetInstance()getTime()一样

Systemoutprintln("用DateFormatgetDateInstance()格式化时间后为:" + str1);

Systemoutprintln("用DateFormatgetDateTimeInstance()格式化时间后为:" + str2);

Systemoutprintln("用DateFormatgetTimeInstance()格式化时间后为:" + str3);

Systemoutprintln("用DateFormatgetInstance()格式化时间后为:" + str4);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatFULL,DateFormatFULL)格式化时间后为:" + str5);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatLONG,DateFormatLONG)格式化时间后为:" + str6);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatSHORT,DateFormatSHORT)格式化时间后为:" + str7);

Systemoutprintln("用DateFormatgetDateTimeInstance(DateFormatMEDIUM,DateFormatMEDIUM)格式化时间后为:" + str8);

}

}

运行结果:

用Date方式显示时间: Mon Jun 16 20:54:53 CST 2008

用DateFormatgetDateInstance()格式化时间后为:2008-6-16

用DateFormatgetDateTimeInstance()格式化时间后为:2008-6-16 20:54:53

用DateFormatgetTimeInstance()格式化时间后为:20:54:53

用DateFormatgetInstance()格式化时间后为:08-6-16 下午8:54

用DateFormatgetDateTimeInstance(DateFormatFULL,DateFormatFULL)格式化时间后为

:2008年6月16日 星期一 下午08时54分53秒 CST

用DateFormatgetDateTimeInstance(DateFormatLONG,DateFormatLONG)格式化时间后为

:2008年6月16日 下午08时54分53秒

用DateFormatgetDateTimeInstance(DateFormatSHORT,DateFormatSHORT)格式化时间后

为:08-6-16 下午8:54

用DateFormatgetDateTimeInstance(DateFormatMEDIUM,DateFormatMEDIUM)格式化时间

后为:2008-6-16 20:54:53

方法二:用javautilCalendar类来实现,看下面:

import javautil;

import javatext;

//以下是利用Calendar类来实现日期时间的,和Date类相比较比较简单

public class TestDate2 {

public static void main(String[] args) {

Calendar ca = CalendargetInstance();

int year = caget(CalendarYEAR);//获取年份

int month=caget(CalendarMONTH);//获取月份

int day=caget(CalendarDATE);//获取日

int minute=caget(CalendarMINUTE);//分

int hour=caget(CalendarHOUR);//小时

int second=caget(CalendarSECOND);//秒

int WeekOfYear = caget(CalendarDAY_OF_WEEK);

Systemoutprintln("用CalendargetInstance()getTime()方式显示时间: " + cagetTime());

Systemoutprintln("用Calendar获得日期是:" + year +"年"+ month +"月"+ day + "日");

Systemoutprintln("用Calendar获得时间是:" + hour +"时"+ minute +"分"+ second +"秒");

Systemoutprintln(WeekOfYear);//显示今天是一周的第几天(我做的这个例子正好是周二,故结果显示2,如果你再周6运行,那么显示6)

}

}

运行结果是:

用CalendargetInstance()getTime()方式显示时间: Mon Jun 16 21:54:21 CST 2008

用Calendar获得日期是:2008年5月16日

用Calendar获得时间是:9时54分21秒

2

总结:中的来说,方法二是最方便的,方法一显得分笨拙,不过看个人喜欢了。

还有一种方法利用SystemcurrentTimeMillis()也可以。

package packjavacalendardemo;

import javatextSimpleDateFormat;

import javautilCalendar;

import javautilDate;

import javautilGregorianCalendar;

public class CalendarDemo {

private static SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

public static void main(String[] args) {

//获取calendar实例;

Calendar calendar = CalendargetInstance();

//判断calendar是不是GregorianCalendar类的实例;

if(calendar instanceof GregorianCalendar){

Systemoutprintln("属于GregorianCalendar类的实例!");

}

//从calendar对象中获得date对象,当前时间;

Date dates = calendargetTime();

//格式化时间;

String date_str= date_formatformat(dates);

Systemoutprintln(date_str);

//设置月份05;代表日历的月份6月,因为月份从0开始。

calendarset(CalendarMONTH, 05);

int months = calendarget(CalendarMONTH);

Systemoutprintln(months); //输出05;

//设置日期为2011-07-24 09:59:50

calendarset(2011, 06, 24, 9, 59, 50);

String getDate = date_formatformat(calendargetTime());

Systemoutprintln(getDate); //输出2011-07-24 09:59:50;

//比较日前大小;

if(new Date()getTime() > calendargetTimeInMillis()){

Systemoutprintln("当前日期在后!");

}else{

Systemoutprintln("当前日期在前!");

}

//设置当前时间为:2011-07-24 11:06:00

calendarsetTime(new Date());

int year = calendarget(CalendarYEAR); //获取年;

int month = calendarget(CalendarMONTH); //获取月;

int date = calendarget(CalendarDATE); //获取天;

int hour = calendarget(CalendarHOUR); //获取小时;

int minute = calendarget(CalendarMINUTE); //获取分钟;

int second = calendarget(CalendarSECOND); //获取秒钟;

int hour_of_day = calendarget(CalendarHOUR_OF_DAY); //第几个小时,

int day_of_month = calendarget(CalendarDAY_OF_MONTH); //这天,在一个月内是第几天

int day_of_week = calendarget(CalendarDAY_OF_WEEK); //这天,在一周内,是第几天

int day_of_year = calendarget(CalendarDAY_OF_YEAR); //这天,在一年内,是第几天。

int week_of_year = calendarget(CalendarWEEK_OF_YEAR); //这周,在一年内是第几周;

int week_of_month = calendarget(CalendarWEEK_OF_MONTH);//这周,在这个月是第几周;以以星为标准;

int zone_offset = calendarget(CalendarZONE_OFFSET); //获取时区;

int day_of_week_in_month = calendarget(CalendarDAY_OF_WEEK_IN_MONTH); //某月中第几周,按这个月1号算,1号起就是第1周,8号起就是第2周。以月份天数为标准

int r = calendarget(CalendarAM_PM);

if(r==calendarAM){

Systemoutprintln("现在是上午");

}

if(r==calendarPM){

Systemoutprintln("现在是下午");

}

Systemoutprintln("==================================================");

Systemoutprintln(year);

Systemoutprintln(month);

Systemoutprintln(date);

Systemoutprintln(hour);

Systemoutprintln(minute);

Systemoutprintln(second);

Systemoutprintln(hour_of_day);

Systemoutprintln(day_of_month);

Systemoutprintln(day_of_week);

Systemoutprintln(day_of_year);

Systemoutprintln(week_of_year);

Systemoutprintln(week_of_month);

Systemoutprintln(zone_offset);

Systemoutprintln(day_of_week_in_month);

}

}

以上就是关于java 获取当前日期,应该如何 *** 作呢全部的内容,包括:java 获取当前日期,应该如何 *** 作呢、请问高手,用Calendar包实现,在java中如何获取指定年月日的星期、Java中获取本周内所有日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9748964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存