1. 获取年月日时分秒:
  1. package com.util;
  2. import java.text.DateFormat;
  3. import java.util.Calendar;
  4. import java.util.Date;
  5. public class Test {
  6. public void getTimeByDate(){
  7. Date date = new Date();
  8. DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日
  9. System.out.println(df1.format(date));
  10. DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒
  11. System.out.println(df2.format(date));
  12. DateFormat df3 = DateFormat.getTimeInstance();//只显示出时分秒
  13. System.out.println(df3.format(date));
  14. DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //显示日期,周,上下午,时间(精确到秒)
  15. System.out.println(df4.format(date));
  16. DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //显示日期,上下午,时间(精确到秒)
  17. System.out.println(df5.format(date));
  18. DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //显示日期,上下午,时间(精确到分)
  19. System.out.println(df6.format(date));
  20. DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //显示日期,时间(精确到分)
  21. System.out.println(df7.format(date));
  22. }
  23. public void getTimeByCalendar(){
  24. Calendar cal = Calendar.getInstance();
  25. int year = cal.get(Calendar.YEAR);//获取年份
  26. int month=cal.get(Calendar.MONTH);//获取月份
  27. int day=cal.get(Calendar.DATE);//获取日
  28. int hour=cal.get(Calendar.HOUR);//小时
  29. int minute=cal.get(Calendar.MINUTE);//分
  30. int second=cal.get(Calendar.SECOND);//秒
  31. int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天
  32. System.out.println("现在的时间是:公元"+year+"年"+month+"月"+day+"日      "+hour+"时"+minute+"分"+second+"秒       星期"+WeekOfYear);
  33. }
  34. public static void main(String[] args) {
  35. Test t=new Test();
  36. t.getTimeByDate();
  37. System.out.println("****************************");
  38. t.getTimeByCalendar();
  39. }
  40. }

获取日,如果大于16则+2个月,否则+1个月,输出7个月

  1. public static void main(String[] as) throws Exception {
  2. int j;
  3. Calendar cc = Calendar.getInstance();
  4. int myYear = cc.get(Calendar.YEAR);
  5. int myMonth = cc.get(Calendar.MONTH);
  6. j=cc.get(Calendar.DATE)>16?3:2;
  7. cc.set(Calendar.MONTH, myMonth+j);
  8. System.out.println(myYear+"-"+cc.get(cc.MONTH));
  9. for(int i=0;i<7;i++){
  10. cc.add(cc.MONTH, 1);
  11. int mm = cc.get(cc.MONTH);
  12. int mmm=mm==0?12:mm;
  13. System.out.println(myYear+"-"+mmm);
  14. }
  15. }

这里有个博客http://www.blogjava.net/xiaoyi/articles/295044.html,里面有一些常用方法的实现,可以参考,自己在优化

java中常用日期操作大全

1.计算某一月份的最大天数

1Calendar time=Calendar.getInstance();
2time.clear();
3time.set(Calendar.YEAR,year); //year 为 int 
4time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0           
5int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数

注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间

2.Calendar和Date的转化

(1) Calendar转化为Date

Calendar cal=Calendar.getInstance();
Date date=cal.getTime();

(2) Date转化为Calendar

Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);

3.格式化输出日期时间 (这个用的比较多)
其一

1Date date=new Date();
2SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
3String time=df.format(date);
4System.out.println(time);//2008-10-27 08:52:32

其二

1Calendar c = Calendar.getInstance();
2System.out.println(c.getTime());//Mon Oct 27 08:51:21 CST 2008
3SimpleDateFormat simpleDateTimeFormat = new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss ");
4c = Calendar.getInstance(Locale.CHINESE);
5System.out.println(simpleDateTimeFormat.format(c.getTime()));// 2008-10-27 08:51:21 

4.计算一年中的第几星期

(1)计算某一天是一年中的第几星期

1Calendar cal=Calendar.getInstance();
2cal.set(Calendar.YEAR, 2006);
3cal.set(Calendar.MONTH, 8);
4cal.set(Calendar.DAY_OF_MONTH, 3);
5int weekno=cal.get(Calendar.WEEK_OF_YEAR);

(2)计算一年中的第几星期是几号

1SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
2Calendar cal=Calendar.getInstance();
3cal.set(Calendar.YEAR, 2006);
4cal.set(Calendar.WEEK_OF_YEAR, 1);
5cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
6System.out.println(df.format(cal.getTime()));

输出:
2006-01-02

5.add()和roll()的用法(不太常用)

(1)add()方法

 1SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
 2Calendar cal=Calendar.getInstance();
 3cal.set(Calendar.YEAR, 2006);
 4cal.set(Calendar.MONTH, 8);
 5cal.set(Calendar.DAY_OF_MONTH, 3);
 6cal.add(Calendar.DATE, -4);
 7Date date=cal.getTime();
 8System.out.println(df.format(date));
 9cal.add(Calendar.DATE, 4);
10date=cal.getTime();
11System.out.println(df.format(date));

输出:
    2006-08-30
    2006-09-03
(2)roll方法

1cal.set(Calendar.YEAR, 2006);
2cal.set(Calendar.MONTH, 8);
3cal.set(Calendar.DAY_OF_MONTH, 3);
4cal.roll(Calendar.DATE, -4);
5date=cal.getTime();
6System.out.println(df.format(date));
7cal.roll(Calendar.DATE, 4);
8date=cal.getTime();
9System.out.println(df.format(date));

输出:
    2006-09-29
    2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;

6.计算两个任意时间中间的间隔天数(这个比较常用)
(1)传进Calendar对象

 1 public int getIntervalDays(Calendar startday,Calendar endday){       
 2        if(startday.after(endday)){
 3            Calendar cal=startday;
 4            startday=endday;
 5            endday=cal;
 6        }    
 7        long sl=startday.getTimeInMillis();
 8        long el=endday.getTimeInMillis();
 9       
10        long ei=el-sl;           
11        return (int)(ei/(1000*60*60*24));
12    }
13

(2)传进Date对象

 1    public int getIntervalDays(Date startday,Date endday){        
 2        if(startday.after(endday)){
 3            Date cal=startday;
 4            startday=endday;
 5            endday=cal;
 6        }        
 7        long sl=startday.getTime();
 8        long el=endday.getTime();       
 9        long ei=el-sl;           
10        return (int)(ei/(1000*60*60*24));
11    }

(3)改进精确计算相隔天数的方法

 1 public int getDaysBetween (Calendar d1, Calendar d2) {
 2        if (d1.after(d2)) 
 3            java.util.Calendar swap = d1;
 4            d1 = d2;
 5            d2 = swap;
 6        }
 7        int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
 8        int y2 = d2.get(Calendar.YEAR);
 9        if (d1.get(Calendar.YEAR) != y2) {
10            d1 = (Calendar) d1.clone();
11            do {
12                days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
13                d1.add(Calendar.YEAR, 1);
14            } while (d1.get(Calendar.YEAR) != y2);
15        }
16        return days;
17    }
18

注意:通过上面的方法可以衍生出求任何时间,如要查出邮箱三周之内收到的邮件(得到当前系统时间-再得到三周前时间)用收件的时间去匹配 最好装化成 long去比较
如:1年前日期(注意毫秒的转换)

   java.util.Date myDate=new java.util.Date();
   long myTime=(myDate.getTime()/1000)-60*60*24*365;
   myDate.setTime(myTime*1000);
   String mDate=formatter.format(myDate);

7. String 和 Date ,Long 之间相互转换 (最常用)

字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)
通常我们取时间跨度的时候,会substring出具体时间--long-比较

1java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
2java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");
3long dvalue=d.getTime();
4SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
5String mDateTime1=formatter.format(d);

8. 通过时间求时间

年月周求日期

1SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
2java.util.Date date2= formatter2.parse("2003-05 5 星期五");
3SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
4String mydate2=formatter3.format(date2);

求是星期几

mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);

9. java 和 具体的数据库结合

在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver 数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
你可以使用dateFormat定义时间日期的格式,转一个字符串即可

 1class Datetest{
 2*method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
 3*@param dateString 需要转换为timestamp的字符串
 4*@return dataTime timestamp
 5
 6public final static java.sql.Timestamp string2Time(String dateString)
 7throws java.text.ParseException {
 8DateFormat dateFormat;
 9dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//设定格式
10//dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
11dateFormat.setLenient(false);
12java.util.Date timeDate = dateFormat.parse(dateString);//util类型
13java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
14return dateTime;
15}
16
17*method 将字符串类型的日期转换为一个Date(java.sql.Date)
18*@param dateString 需要转换为Date的字符串
19*@return dataTime Date
20
21public final static java.sql.Date string2Date(String dateString)
22throws java.lang.Exception {
23DateFormat dateFormat;
24dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
25dateFormat.setLenient(false);
26java.util.Date timeDate = dateFormat.parse(dateString);//util类型
27java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
28return dateTime;
29}
30
31public static void main(String[] args){
32Date da = new Date();
33注意:这个地方da.getTime()得到的是一个long型的值
34System.out.println(da.getTime());
35
36由日期date转换为timestamp
37
38第一种方法:使用new Timestamp(long)
39Timestamp t = new Timestamp(new Date().getTime());
40System.out.println(t);
41
42第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)
43Timestamp tt = new Timestamp(Calendar.getInstance().get(
44      Calendar.YEAR) - 1900, Calendar.getInstance().get(
45      Calendar.MONTH), Calendar.getInstance().get(
46      Calendar.DATE), Calendar.getInstance().get(
47      Calendar.HOUR), Calendar.getInstance().get(
48      Calendar.MINUTE), Calendar.getInstance().get(
49      Calendar.SECOND), 0);
50System.out.println(tt);
51
52try {
53String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串
54      String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串
55      Date date1 = string2Date(sToDate);
56      Timestamp date2 = string2Time(sToTimestamp);
57System.out.println("Date:"+date1.toString());//结果显示
58System.out.println("Timestamp:"+date2.toString());//结果显示
59}catch(Exception e) {
60e.printStackTrace();
61}
62}
63
64

原文链接:http://zcw-java.iteye.com/blog/1498125

http://www.blogjava.net/xiaoyi/articles/295044.html

JAVA日期转中文汉字:

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. public class DateToUpperChinese {
  4. private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍",
  5. "陆", "柒", "捌", "玖" };
  6. public static synchronized String toChinese(String str) {
  7. StringBuffer sb = new StringBuffer();
  8. sb.append(getSplitDateStr(str, 0)).append(" ").append(
  9. getSplitDateStr(str, 1)).append(" ").append(
  10. getSplitDateStr(str, 2));
  11. return sb.toString();
  12. }
  13. public static String getSplitDateStr(String str, int unit) {
  14. // unit是单位 0=年 1=月 2日
  15. String[] DateStr = str.split("-");
  16. if (unit > DateStr.length)
  17. unit = 0;
  18. StringBuffer sb = new StringBuffer();
  19. for (int i = 0; i < DateStr[unit].length(); i++) {
  20. if ((unit == 1 || unit == 2) && Integer.valueOf(DateStr[unit]) > 9) {
  21. sb.append(convertNum(DateStr[unit].substring(0, 1)))
  22. .append("拾").append(
  23. convertNum(DateStr[unit].substring(1, 2)));
  24. break;
  25. } else {
  26. sb.append(convertNum(DateStr[unit].substring(i, i + 1)));
  27. }
  28. }
  29. if (unit == 1 || unit == 2) {
  30. return sb.toString().replaceAll("^壹", "").replace("零", "");
  31. }
  32. return sb.toString();
  33. }
  34. private static String convertNum(String str) {
  35. return NUMBERS[Integer.valueOf(str)];
  36. }
  37. public static boolean isNumeric(String str) {
  38. Pattern pattern = Pattern.compile("[0-9]*");
  39. Matcher isNum = pattern.matcher(str);
  40. if (!isNum.matches()) {
  41. return false;
  42. }
  43. return true;
  44. }
  45. public static void main(String args[]) {
  46. System.out.println(toChinese("2008-10-02"));
  47. }
  48. }
 

Date日期操作的更多相关文章

  1. php strtotime 和 date 日期操作

    time()得到的数值是1970-1-1到现在的秒数,strtotime("now")也是,两个值是相同的. http://doc.thinkphp.cn/manual/syste ...

  2. JavaScript Date 日期操作

    在前端工程师的道路上,可能有时候需要与时间来打交道,下面我们来看一下日常对日期的操作,今天我们介绍的是Day.js插件 Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Mom ...

  3. Java Date 日期 时间 相关方法

    DateTools.java import java.text.SimpleDateFormat; import java.util.Date; /** * 日期操作类 */ public class ...

  4. java 字符串操作和日期操作

    一.字符串操作 创建字符串 String s2 = new String("Hello World"); String s1 = "Hello World"; ...

  5. JAVASE02-Unit03: 日期操作 、 集合框架

    Unit03: 日期操作 . 集合框架 java.util.Date package day03; import java.util.Date; /** * java.util.Date * Date ...

  6. Lua库之时间和日期操作

    Lua库之时间和日期操作 (2010-02-07 18:41:20) 转载▼ os.time() <== 返回当前系统的日历时间os.date() <== 返回本地化的时间字符串,这里是& ...

  7. java日期操作大全

    摘自(http://www.blogjava.net/i369/articles/83483.html) java日期操作 大全 先来一个:  取得指定月份的第一天与取得指定月份的最后一天  http ...

  8. oracle日期操作

    日期操作:ADD_MONTHS(date,i) 作用 返回在自定日期上添加的月份 i是整数 如果i是小数,则截取整数部分 i是负数 原有日期减去相应部分 例子: SQL> select add_ ...

  9. NSDate 总结日期操作

    IOS Object-c NSDate总结日期操作 //NSDate //1, 创建NSDate对象 NSDate *nowDate = [NSDate date]; NSLog(@"%@& ...

随机推荐

  1. eclipse新建maven项目出现红叉解决办法

    新建的maven项目,项目内代码及pom.xml没有任何问题,但项目上就是有红叉,这时点开Markers(Window–>show veiw–>Markers),查看错误的详细信息,信息上 ...

  2. 一个团队和他们的调查表-----("调查表与调查结果分析"心得体会)

    注:这篇blog主要是描述六小灵童团队在从接到调查表任务到分析调查数据最后完成本次任务的过程,以及过程中的点滴和心德体会.---蔡何 1.制表历程 随着课程的推进,我们逐步进入了软件项目中比较重要的需 ...

  3. bug-ajax

    ajax 的get 方法参数及url的长度有限制 问题:url的参数只有一个url?id=101001000000000000000001 参数过长,ajax会报错. 解决方法:1,把get换成pos ...

  4. Python3 exec 函数

    Python3 exec 函数  Python3 内置函数 描述 exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码. 语法 以下 ...

  5. 2.Add Two Numbers (List)

    You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...

  6. C++中纯虚函数

    1.纯虚函数 virtual ReturnType Function()= 0; 纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义.凡是含有纯虚函数的类叫做抽象类 ...

  7. Java注解(Annotation)用法:利用注解和反射机制指定列名导出数据库数据

    闲来没事,想了一个应用的例子:用java如何把数据库的数据根据我们指定的某几列,如第2列,第4列,第6列导出来到Excel里? 写代码也是为了应用的,写好的代码更重要的是在于思考.我自己思考了这个示例 ...

  8. js td innerHTML

    用value不好使,用innerHTML可以.JS:document.getElementById("aa").innerHTML="单元格"; body:&l ...

  9. Spring框架的事务管理之编程式的事务管理(了解)

    1. 说明:Spring为了简化事务管理的代码:提供了模板类 TransactionTemplate,所以手动编程的方式来管理事务,只需要使用该模板类即可!!2.手动编程方式的具体步骤如下: 1.步骤 ...

  10. 全屏API

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2679 二.相关文章以 ...