`
- 浏览:
14861 次
- 性别:
- 来自:
南京
-
- 计算某一月份的最大天数
-
- Calendar time=Calendar.getInstance();
- time.clear();
-
time.set(Calendar.YEAR,year);
-
time.set(Calendar.MONTH,i-1);
-
int 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.格式化输出日期时间 (这个用的比较多)
-
-
Date date=new Date();
-
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
- String time=df.format(date);
- System.out.println(time);
-
-
4.计算一年中的第几星期
-
-
(1)计算某一天是一年中的第几星期
- Calendar cal=Calendar.getInstance();
-
cal.set(Calendar.YEAR, 2006);
-
cal.set(Calendar.MONTH, 8);
-
cal.set(Calendar.DAY_OF_MONTH, 3);
-
int weekno=cal.get(Calendar.WEEK_OF_YEAR);
-
-
(2)计算一年中的第几星期是几号
-
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
- Calendar cal=Calendar.getInstance();
-
cal.set(Calendar.YEAR, 2006);
-
cal.set(Calendar.WEEK_OF_YEAR, 1);
- cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
- System.out.println(df.format(cal.getTime()));
- 输出:
-
2006-01-02
-
-
5.add()和roll()的用法(不太常用)
-
-
(1)add()方法
-
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
- Calendar cal=Calendar.getInstance();
-
cal.set(Calendar.YEAR, 2006);
-
cal.set(Calendar.MONTH, 8);
-
cal.set(Calendar.DAY_OF_MONTH, 3);
-
cal.add(Calendar.DATE, -4);
- Date date=cal.getTime();
- System.out.println(df.format(date));
-
cal.add(Calendar.DATE, 4);
- date=cal.getTime();
- System.out.println(df.format(date));
- 输出:
-
2006-08-30
-
2006-09-03
-
(2)roll方法
-
cal.set(Calendar.YEAR, 2006);
-
cal.set(Calendar.MONTH, 8);
-
cal.set(Calendar.DAY_OF_MONTH, 3);
-
cal.roll(Calendar.DATE, -4);
- date=cal.getTime();
- System.out.println(df.format(date));
-
cal.roll(Calendar.DATE, 4);
- date=cal.getTime();
- System.out.println(df.format(date));
- 输出:
-
2006-09-29
-
2006-09-03
- 可见,roll()方法在本月内循环,一般使用add()方法;
-
-
6.计算两个任意时间中间的间隔天数(这个比较常用)
-
(1)传进Calendar对象
-
public int getIntervalDays(Calendar startday,Calendar endday)...{
-
if(startday.after(endday))...{
- Calendar cal=startday;
- startday=endday;
- endday=cal;
- }
-
long sl=startday.getTimeInMillis();
-
long el=endday.getTimeInMillis();
-
-
long ei=el-sl;
-
return (int)(ei/(1000*60*60*24));
- }
-
(2)传进Date对象
-
-
public int getIntervalDays(Date startday,Date endday)...{
-
if(startday.after(endday))...{
- Date cal=startday;
- startday=endday;
- endday=cal;
- }
-
long sl=startday.getTime();
-
long el=endday.getTime();
-
long ei=el-sl;
-
return (int)(ei/(1000*60*60*24));
- }
-
(3)改进精确计算相隔天数的方法
-
public int getDaysBetween (Calendar d1, Calendar d2) ...{
-
if (d1.after(d2)) ...{
- java.util.Calendar swap = d1;
- d1 = d2;
- d2 = swap;
- }
-
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
-
int y2 = d2.get(Calendar.YEAR);
-
if (d1.get(Calendar.YEAR) != y2) ...{
- d1 = (Calendar) d1.clone();
-
do ...{
-
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);
-
d1.add(Calendar.YEAR, 1);
-
} while (d1.get(Calendar.YEAR) != y2);
- }
-
return days;
- }
-
注意:通过上面的方法可以衍生出求任何时间,如要查出邮箱三周之内收到的邮件(得到当前系统时间-再得到三周前时间)用收件的时间去匹配 最好装化成 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-比较
-
-
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
-
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");
-
long dvalue=d.getTime();
-
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String mDateTime1=formatter.format(d);
-
-
8. 通过时间求时间
-
- 年月周求日期
-
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
-
java.util.Date date2= formatter2.parse("2003-05 5 星期五");
-
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
- String 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定义时间日期的格式,转一个字符串即可
-
-
class Datetest{
- *method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
-
*@param dateString 需要转换为timestamp的字符串
-
*@return dataTime timestamp
-
-
public final static java.sql.Timestamp string2Time(String dateString)
-
throws java.text.ParseException {
- DateFormat dateFormat;
-
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);
-
-
dateFormat.setLenient(false);
-
java.util.Date timeDate = dateFormat.parse(dateString);
-
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());
-
return dateTime;
- }
-
- *method 将字符串类型的日期转换为一个Date(java.sql.Date)
-
*@param dateString 需要转换为Date的字符串
-
*@return dataTime Date
-
-
public final static java.sql.Date string2Date(String dateString)
-
throws java.lang.Exception {
- DateFormat dateFormat;
-
dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
-
dateFormat.setLenient(false);
-
java.util.Date timeDate = dateFormat.parse(dateString);
-
java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());
-
return dateTime;
- }
-
-
public static void main(String[] args){
-
Date da = new Date();
-
注意:这个地方da.getTime()得到的是一个long型的值
- System.out.println(da.getTime());
-
- 由日期date转换为timestamp
-
-
第一种方法:使用new Timestamp(long)
-
Timestamp t = new Timestamp(new Date().getTime());
- System.out.println(t);
-
-
第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)
-
Timestamp tt = new Timestamp(Calendar.getInstance().get(
-
Calendar.YEAR) - 1900, Calendar.getInstance().get(
- Calendar.MONTH), Calendar.getInstance().get(
- Calendar.DATE), Calendar.getInstance().get(
- Calendar.HOUR), Calendar.getInstance().get(
- Calendar.MINUTE), Calendar.getInstance().get(
-
Calendar.SECOND), 0);
- System.out.println(tt);
-
-
try {
-
String sToDate = "2005-8-18";
-
String sToTimestamp = "2005-8-18 14:21:12.123";
- Date date1 = string2Date(sToDate);
- Timestamp date2 = string2Time(sToTimestamp);
-
System.out.println("Date:"+date1.toString());
-
System.out.println("Timestamp:"+date2.toString());
-
}catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
常用java date方法集合,对DATE类型操作的总结
而Date的其他构造方法和普通方法的API都不容易实现国际化,因此目前Date类的大多数方法都被标识为过时,表示更灵活的时间类请参考java.util.Calendar。 Date的输出结果是按照国际通用格式输出的,而中国更习惯于...
differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 hasFinalFun.java 拥有最终方法的类 hasRecall.java ...
1.4 java中的一些常用词汇 1.5 J2SE学习中的30个基本概念 1.6 Java线程 1.7 Java 5.0多线程编程 1.8 Java Socket编程 1.9 Java的内存泄漏 1.10 抽象类与接口的区别 1.11 Java变量类型间的相互转换 2 JAVA与WEB 2.1 ...
<java.lang>.Date:日期类,月份从0—11 92 <java.lang> Calendar:日历类 93 十六、 IO流:用于处理设备上数据 ★★★★★ 94 IO流的概念 95 字符流与字节流 98 流对象 101 File类 102 Java.util.Properties 103 ...
Java集合简介 使用List 编写equals方法 使用Map 编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用...
* 这是一个通用的方法,利用了JAVA的反射机制, * 可以将放置在JAVA集合中并且符合一定条件的数据以EXCEL的形式输 出到指定IO设备上 * @param title 表格标题名 * @param headers 表格属性列名数组 * @...
031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记.pdf 031106_【第11章:Java常用类库】_日期操作类(DateFormat、SimpleDateFormat)笔记.pdf 031107_〖第11章:Java常用类库〗_实例操作:取得...
1.4 java中的一些常用词汇 56 1.5 J2SE学习中的30个基本概念 58 1.6 Java线程 60 1.7 Java 5.0多线程编程 65 1.8 Java Socket编程 80 1.9 Java的内存泄漏 85 1.10 抽象类与接口的区别 86 1.11 Java变量类型间的相互...
day04-常用API、正则表达式,泛型、Collection集合API day05-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 day06-Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法 day07-异常,线程的创建方式...
常用Java开发工具 20 常用dos命令 21 本章笔试作业 21 本章上机操作 21 第二章(1) 编程的基本概念 22 注释 22 标识符 22 关键字/保留字 23 变量(variable) 24 常量(Constant) 25 命名规则(规范) 25 基本数据类型...
第3版 机械工业出版社 教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...
熟悉常用API:包括Date、DateFormat、Calendar、System和StringBuilde等,这些是在Java编程中经常用到的类和方法。 学习集合:理解Java中的Collection、泛型、List、Set、Collections、Map和HashMap等概念和用法。 ...
5.4.4 Java的常用包 140 5.5 深入构造器 140 5.5.1 使用构造器执行初始化 141 学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 141 5.5.2 构造器的重载 142 学生提问:为什么要用...
Java常用类指的是Java标准库中提供的一些常用的类,这些类提供了丰富的功能和工具,可以帮助开发者更高效地编写Java程序。Java常用类包括但不限于以下几个方面的内容: 集合类: ArrayList、LinkedList、HashMap、...
在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式...
Java 集合框架 数组 字符串 GOF 设计模式 SOLID (单一功能、 开闭原则、 里氏替换、 接口隔离以及依赖反转) 设计原则 抽象类与接口 Java 基础, 如 equals 和 hashcode 泛型与枚举 Java IO 与 NIO 常用网络协议 ...
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...
在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...