/*
集合的一些技巧
需要唯一吗?
需要: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];
}
}