Date类

/* 

 集合的一些技巧
    
    需要唯一吗?
    需要:Set
               需要指定顺序:
                              需要:TreeSet
                              不需要:HashSet
                              但是想要一个和存储一致的顺序(有序):LinkedHashSet
   不需要:List
                需要频繁增删吗?
                                     需要:LinkedList
                                     不需要:ArrayList
              
   如何记录每一容器的机构和所属体系呢?
   看名字!
   
  List
      |--ArrayList
      |--LinkedList
   
  Set
      |--HashSet
      |--TreeSet
      
  后缀名就是该集合所属的体系。
  前缀名就是该集合的数据结构。
  看到array:就要想到数组,就要想到查询块,有角标。
  看到link:就要想到链表,就要想到增删快,就要想到add get remove+frist last的方法。
  看到hash:就要想到哈希表,就要想到唯一性,就要想到元素需要覆盖hashcode方法和equals方法。
  看到tree:就要想到二叉树,就要想到排序,就要想到两个接口Comparable、Comparator。
  
  而且通常这些常用的集合容器都是不同步的。

*/

package com.huaWei.date;



import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**

*日期转换类

*/

public class MyDate {
public static void main(String[] args) throws ParseException {
// dateTransformationMillisecond();
// dateTransformationString();
// stringTransformationDate();
dateCalculation();
}


/**
* 日期和毫秒值之间的转换

* 毫秒值---->日期对象: 
*     1.通过Date对象的构造方法new Date(TimeMillis); 
*     2.还可以通过setTime设置。
*       因为可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作。


* 日期对象--->毫秒值
*     1.getTime方法。 
*       因为可以通过具体的数值进行运算(如计算两个日期之间的时间)。
*/
public static void dateTransformationMillisecond() {
long time = System.currentTimeMillis();
System.out.println("time:" + time);// time:1443443205906


Date date1 = new Date();// 将当前的日期和时间封装成对象
System.out.println("date1:" + date1);// date1:Mon Sep 28 20:53:32 CST
// 2015


Date date2 = new Date(1443443205906l);// 将指定的毫秒值封装成date对象。
System.out.println("date2:" + date2);
}


/**
* 对日期对象进行格式化 
* 将日期对象---->日期格式的字符串 
* 使用的是DateFormat类中的format方法。
*/
public static void dateTransformationString() {
Date date = new Date();
// 获取日期格式对象,具有着默认的风格。MEDIUM(默认)、FULL、LONG、SHORT等可以指定风格。
DateFormat dateFormat = DateFormat.getDateInstance();
          dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
          dateFormat = DateFormat.getDateTimeInstance();
          dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);


         // 如果风格是自定义的如何解决呢?
         dateFormat = new SimpleDateFormat("yyyy---MM---dd");
String str_date = dateFormat.format(date);
System.out.println(str_date);
}


/**
* 将日期格式的字符串--->日期对象 
* 使用的是DateForm类中的parse()方法。

* @throws ParseException
*/
public static void stringTransformationDate() throws ParseException {
String str_date = "2015-09-28";
      str_date = "2015年09月29日";
      str_date = "2015---09---30";
DateFormat dateFormat = DateFormat.getDateInstance();
          dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
          dateFormat = new SimpleDateFormat("yyyy---MM---dd");
Date date = dateFormat.parse(str_date);
System.out.println(date);
}


/**
* 需求:"2015-09-10"到"2015-10-07"中间有多少天? 
* 思路:两个日期相减就可以了。 
* 咋减呢? 必须要有两个可以进行减法运算的数。
* 能减可以是毫秒值。如何获取毫秒值?
* 通过date对象。 如何获取date对象呢?
* 可以将字符串转成date对象。

* 1.将日期格式的字符串转成Date对象。 
* 2.将Date对象转成毫秒值。 
* 3.相减,在变成天数。

* @throws ParseException
*/
public static void dateCalculation() throws ParseException {


String str_date_1 = "2015-09-10";
String str_date_2 = "2015-10-07";


// 1.将日期字符串转成日期对象。
// 定义日期格式对象
DateFormat dateForm = DateFormat.getDateInstance();
          dateForm = new SimpleDateFormat("yyyy-MM-dd");


Date date_1 = dateForm.parse(str_date_1);
Date date_2 = dateForm.parse(str_date_2);


long time_1 = date_1.getTime();
long time_2 = date_2.getTime();


long time = Math.abs(time_1 - time_2);


int day = getDay(time);
System.out.println(day);
}


/**
* 日期计算

* @param time 毫秒值
* @return
*/
public static int getDay(long time) {
int day = (int) (time / 1000 / 60 / 60 / 24);
return day;
}

}


package com.huaWei.date;


import java.util.Calendar;
/**
 * 获取日期及时间
 * @author 华伟科技
 *
 */
public class MyCalendar {
public static void main(String[] args) {
// myCalendar();
yearDay();
}


public static void myCalendar() {
Calendar calendar = Calendar.getInstance();
calendar.set(2016, 11, 23);
calendar.add(Calendar.YEAR, 2);
calendar.add(Calendar.MONTH, 3);
calendar.add(Calendar.DAY_OF_MONTH, 11);

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int week = calendar.get(Calendar.DAY_OF_WEEK);


System.out.println(year + "年" + month + "月" + day + "日" + getWeek(week));
}


/**
* 请计算某年的二月份共多少天?
*/
public static void yearDay() {
int years = 2011;
Calendar c = Calendar.getInstance();
c.set(years, 2, 1);// 表示3月1日(2表示3月份)
c.add(Calendar.DAY_OF_MONTH, -1);// 3月1日向前推一天就是2月份最后一天


int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK);


System.out.println(year + "年" + month + "月" + day + "日" + getWeek(week));
}


public static String getWeek(int i) {
String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return weeks[i];
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值