Date类

  • Post author:
  • Post category:其他


/*

集合的一些技巧






需要唯一吗?



需要: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];



}

}



版权声明:本文为HongWeiCHina原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。