Date 类型:

    Date date = new Date();   // 代表获取当前系统日期和时间

    System.out.println(date);

  使用类的方法设置时间和日期:(通过该方法初始化 date,通过getYear()或者getMonth输出与set输入一致)

    date.setMonth(int month);

    date.setYear(int year);

    date.setDay(int day); // 设置 每月多少号

date.setHours();

    .......

  通过字符串初始化:(该方法初始化输出getYear 需要+1900 , getMonth +1才是真实的年月 )

    String time="2010-11-20 11:10:10";

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

date = simpleDateFormat.parse(time);

int year = d2.getYear() + 1900;

int month = d2.getMonth() + 1;

int date = d2.getDate();

int hour = d2.getHours();

int minute = d2.getMinutes();

int second = d2.getSeconds();

int day = d2.getDay();

    Date对象和相对时间之间的互转

      Date d3 = new Date(2009-1900,3-1,10);

long time = 1290876532190L;

//将Date类的对象转换为相对时间

long t = d3.getTime();

System.out.println(t);

//将相对时间转换为Date类的对象

Date d4 = new Date(time);

System.out.println(d4);

      两个Date类型可以通过getTime() 获得相对时间,然后进行比较(注意 初始化的方式,有些是 直接Year初始化,有些是 Year-1900方式初始化)

    

  Date类型进行格式化转化成指定类型的 String:    

    SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
    String in = formatter.format(mDate);

Calendar类

从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些,下面就介绍一下Calendar类的使用。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

1、使用Calendar类代表当前时间

Calendar c = Calendar.getInstance();

      由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。

使用该方法获得的Calendar对象就代表当前的系统时间,由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。

2、使用Calendar类代表指定的时间

Calendar c1 = Calendar.getInstance();

c1.set(2009, 3 - 1, 9);

    使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

  set方法的声明为:

public final void set(int year,int month,int date)

以上示例代码设置的时间为2009年3月9日,其参数的结构和Date类不一样。

    Calendar类中年份的数值直接书写

    月份的值为实际的月份值减1,日期的值就是实际的日期值。

    DAY_OF_WEEK是实际值加1

如果只设定某个字段,例如日期的值,则可以使用如下set方法:

public void set(int field,int value)

在该方法中,参数field代表要设置的字段的类型,常见类型如下:

Calendar.YEAR——年份

Calendar.MONTH——月份

Calendar.DATE——日期

Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同

Calendar.HOUR——12小时制的小时数

Calendar.HOUR_OF_DAY——24小时制的小时数

Calendar.MINUTE——分钟

Calendar.SECOND——秒

Calendar.DAY_OF_WEEK——星期几

后续的参数value代表,设置成的值。例如:

c1.set(Calendar.DATE,10);

该代码的作用是将c1对象代表的时间中日期设置为10号,其它所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。

3、获得Calendar类中的信息

Calendar c2 = Calendar.getInstance();

//年份

int year = c2.get(Calendar.YEAR);

//月份

int month = c2.get(Calendar.MONTH) + 1;

//日期

int date = c2.get(Calendar.DATE);

//小时

int hour = c2.get(Calendar.HOUR_OF_DAY);

//分钟

int minute = c2.get(Calendar.MINUTE);

//秒

int second = c2.get(Calendar.SECOND);

//星期几

int day = c2.get(Calendar.DAY_OF_WEEK);

System.out.println("年份:" + year);

System.out.println("月份:" + month);

System.out.println("日期:" + date);

System.out.println("小时:" + hour);

System.out.println("分钟:" + minute);

System.out.println("秒:" + second);

System.out.println("星期:" + day);

其中参数field代表需要获得的字段的值,字段说明和上面的set方法保持一致。需要说明的是,获得的月份为实际的月份值减1,获得的星期的值和Date类不一样。在Calendar类中,周日是1,周一是2,周二是3,依次类推。

  获取中文星期字符串:   

String[]weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar now = Calendar.getInstance();
String dateNow = weekDays[now.get(Calendar.DAY_OF_WEEK)-1];

  

4、其它方法说明

其实Calendar类中还提供了很多其它有用的方法,下面简单的介绍几个常见方法的使用。

  a、add方法

public abstract void add(int field,int amount);

     该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加是amount的值为正,减少时amount的值为负。

例如在计算一下当前时间100天以后的日期,代码如下:

Calendar c3 = Calendar.getInstance();

c3.add(Calendar.DATE, 100);

int year1 = c3.get(Calendar.YEAR);

//月份

int month1 = c3.get(Calendar.MONTH) + 1;

//日期

int date1 = c3.get(Calendar.DATE);

System.out.println(year1 + "年" + month1 + "月" + date1 + "日");

  这里add方法是指在c3对象的Calendar.DATE,也就是日期字段上增加100,类内部会重新计算该日期对象中其它各字段的值,从而获得100天以后的日期,例如程序的输出结果可能为:

2009年6月17日

  b、after方法

public boolean after(Object when)

  该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false。例如:

Calendar c4 = Calendar.getInstance();

c4.set(2009, 10 - 1, 10);

Calendar c5 = Calendar.getInstance();

c5.set(2010, 10 - 1, 10);

boolean b = c5.after(c4);

System.out.println(b);

  在该示例代码中对象c4代表的时间是2009年10月10号,对象c5代表的时间是2010年10月10号,则对象c5代表的日期在c4代表的日期之后,所以after方法的返回值是true。

  另外一个类似的方法是before,该方法是判断当前日期对象是否位于另外一个日期对象之前。

c、getTime方法

public final Date getTime()

    该方法的作用是将Calendar类型的对象转换为对应的Date类对象,两者代表相同的时间点。

    类似的方法是setTime,该方法的作用是将Date对象转换为对应的Calendar对象,该方法的声明如下:

public final void setTime(Date date)

    转换的示例代码如下:

Date d = new Date();

Calendar c6 = Calendar.getInstance();

//Calendar类型的对象转换为Date对象

Date d1 = c6.getTime();

//Date类型的对象转换为Calendar对象

Calendar c7 = Calendar.getInstance();

c7.setTime(d);

5、Calendar对象和相对时间之间的互转

Calendar c8 = Calendar.getInstance();

long t = 1252785271098L;

//将Calendar对象转换为相对时间

long t1 = c8.getTimeInMillis();

//将相对时间转换为Calendar对象

Calendar c9 = Calendar.getInstance();

c9.setTimeInMillis(t1);

在转换时,使用Calendar类中的getTimeInMillis方法可以将Calendar对象转换为相对时间。在将相对时间转换为Calendar对象时,首先创建一个Calendar对象,然后再使用Calendar类的setTimeInMillis方法设置时间即可。应用示例


下面以两个简单的示例介绍时间和日期处理的基本使用。 1、计算两个日期之间相差的天数 例如计算2010年4月1号和2009年3月11号之间相差的天数,则可以使用时间和日期处理进行计算。 该程序实现的原理为:首先代表两个特定的时间点,这里使用Calendar的对象进行代表,然后将两个时间点转换为对应的相对时间,求两个时间点相对时间的差值,然后除以1天的毫秒数(24小时X60分钟X60秒X1000毫秒)即可获得对应的天数。实现该示例的完整代码如下: import java.util.*; /** * 计算两个日期之间相差的天数 */ public class DateExample1 { public static void main(String[] args) { //设置两个日期 //日期:2009年3月11号 Calendar c1 = Calendar.getInstance(); c1.set(2009, 3 - 1, 11); //日期:2010年4月1号 Calendar c2 = Calendar.getInstance(); c2.set(2010, 4 - 1, 1); //转换为相对时间 long t1 = c1.getTimeInMillis(); long t2 = c2.getTimeInMillis(); //计算天数 long days = (t2 - t1)/(24 * 60 * 60 * 1000); System.out.println(days); } } 2、输出当前月的月历 该示例的功能是输出当前系统时间所在月的日历,例如当前系统时间是2009年3月10日,则输出2009年3月的日历。 该程序实现的原理为:首先获得该月1号是星期几,然后获得该月的天数,最后使用流程控制实现按照日历的格式进行输出即可。即如果1号是星期一,则打印一个单位的空格,如果1号是星期二,则打印两个单位的空格,依次类推。打印完星期六的日期以后,进行换行。实现该示例的完整代码如下: import java.util.*; /** * 输出当前月的日历 */ public class DateExample2{ public static void main(String[] args){ //获得当前时间 Calendar c = Calendar.getInstance(); //设置代表的日期为1号 c.set(Calendar.DATE,1); //获得1号是星期几 int start = c.get(Calendar.DAY_OF_WEEK); //获得当前月的最大日期数 int maxDay = c.getActualMaximum(Calendar.DATE); //输出标题 System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六"); //输出开始的空格 for(int i = 1;i < start;i++){ System.out.print(" "); } //输出该月中的所有日期 for(int i = 1;i <= maxDay;i++){ //输出日期数字 System.out.print(" " + i); //输出分隔空格 System.out.print(" "); if(i < 10){ System.out.print(' '); } //判断是否换行 if((start + i - 1) % 7 == 0){ System.out.println(); } } //换行 System.out.println(); } } 关于时间和日期的处理就介绍这么多,更多的实现方法还需要根据具体问题进行对应的实现。

  

 

    

java android中日期时间 问题总结的更多相关文章

  1. 【Java 与数据库】JDBC中日期时间的处理技巧

    JDBC中日期时间的处理技巧 详谈Java.util.Date和Java.sql.Date 基础知识 Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒 ...

  2. [转]JDBC中日期时间的处理技巧

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

  3. android中获取时间

    android中获取时间 1)通过calendar类获取 Calendar calendar = Calendar.getInstance();int moth = calendar.get(Cale ...

  4. Java 8 新日期时间 API

    Java 8 新日期时间 API 1. LocalDate.LocalTime.LocalDateTime LocalDate.LocalTime.LocalDateTime 实例是不可变的对象,分别 ...

  5. Java 8中的时间

    Java 8中的时间 学习了:https://blog.csdn.net/sun_promise/article/details/51383618

  6. 使用Java编写一个日期时间封装类

    package base; import java.util.GregorianCalendar; import java.util.StringTokenizer; import java.util ...

  7. $Android中日期和时间选择器的实现

    创建日期或时间选择窗口需要弹出Dialog的时候,Activity类的showDialog方法已经弃用了,而推荐使用的是DialogFragment,本文总结一下其具体用法. (一)日期选择器 1.创 ...

  8. Android中的时间日期选择器

    1.layout <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  9. Java中日期时间API小结

    Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...

随机推荐

  1. 微信小程序 获取用户openid

    1,可以在小程序app.js入口文件中放入登录代码 wx.login({ success: res => { // 登录注册接口 if (res.code) { // 调用服务端登录接口,发送 ...

  2. hdu-1175(bfs+剪枝)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路:用bfs,注意要转弯的次数,次数大于两次就跳过. #include<iostream ...

  3. 36 The Benefits of Marriage 结婚的益处

    36 The Benefits of Marriage 结婚的益处 ①Being sociable looks like a good way to add years to your life.Re ...

  4. Part 6 - Class-Based Views(21-26)

    https://github.com/sibtc/django-beginners-guide/tree/v0.6-lw urlpatterns = [ views.PostUpdateView.as ...

  5. 关于EmitMapper,映射配置

    public static T Snapshoot<T>(this XtraForm form, T obj) { var config = new DefaultMapConfig(); ...

  6. UVaLive 2796 Concert Hall Scheduling (最小费用流)

    题意:个著名的音乐厅因为财务状况恶化快要破产,你临危受命,试图通过管理的手段来拯救它,方法之一就是优化演出安排,既聪明的决定接受或拒绝哪些乐团的演出申请,使得音乐厅的收益最大化.该音乐厅有两个完全相同 ...

  7. GitBash入门

    转载自:http://www.cnblogs.com/randomsteps/p/5415116.html 作为一个初学者,我是跟着廖学峰老师的官方博客学习,这里只是做个笔记,哈哈,关于git的历史. ...

  8. 电信网上营业厅-客户充值缴费时间段数据挖掘--spss

    最近研究分析了“云南电信网上营业厅”e9宽带续约缴费的数据,目前宽带续约量为171人,今天需要谈论的是:如何利用SPSS挖掘出“客户充值缴费的时间段”客户喜欢在哪个时间段来网厅进行充值缴费 云南电信网 ...

  9. 团队项目(第四周之一)—GG队

    Alpha认领任务: 叶尚文:对应键盘监听结果的动画以及计算 于泽浩:制作背景gif图,并保证能在程序中循环播放 龙剑初:项目进度跟进及博客更新 杜婷萱:把图片结合起来,设置云朵透明度的变化 蔡晓晴: ...

  10. Java内存模型解惑--观深入理解Java内存模型系列文章有感(二)

    1.volatile关键字修饰的域的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用 ...