java-日期类
一 显示系统时间
package cn.itcast.api.a.date; import java.text.DateFormat;
import java.util.Date; public class DateDemo { /**
* @param args
*/
public static void main(String[] args) { long time = System.currentTimeMillis();
//【怎么能将这个时间转成我们所熟悉的时间呢?】
//通过另请参阅找到Date类。 发现日期对象一初始化可以传递一个毫秒值。 //创建了一个日期对象,将已有的毫秒值进行封装。通过日期对象的方法获取其中的相关信息。比如年月日。
Date date = new Date(time);
System.out.println(date.toString());//Sun Oct 27 09:35:34 CST 2013 //对象的方法已过时。通过toString获取了国际化的信息。如何让信息本土化。
//toLocaleString() 已过时,通过查阅信息发现替代从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。
//要格式化一个当前语言环境下的日期,可使用某个静态工厂方法:myString = DateFormat.getDateInstance().format(myDate); //在获取格式器对象时可以明确风格。 FULL、LONG、MEDIUM(默认风格)和 SHORT
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); //调用format方法对日期对象进行格式化。用默认风格。
String str_date = dateFormat.format(date);
System.out.println(str_date); } }
二 calendar
package cn.itcast.api.a.date;
import java.util.Calendar;
public class DateDemo2 {
/**
* @param args
*/
public static void main(String[] args) {
//需求2:基于需求1,获取到了日期和时间的字符串信息(本地)。
//如何获取字符串中指定的日期信息呢?比如获取年,并判断。
//1,获取日期对象。Date
// Date date = new Date();
//jdk1.1开始 Calendar。//获取日历对象。
Calendar c = Calendar.getInstance();//
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+;
int day = c.get(Calendar.DAY_OF_MONTH);
String week = getCnWeek(c.get(Calendar.DAY_OF_WEEK));
//打印信息中年月日等相关信息都在这里。获取指定字段的值就哦了。
System.out.println(year+"年"+month+"月"+day+"日 "+week);
}
//让星期字段对应的中文的星期。查表。数组。
public static String getCnWeek(int i) {
if(i< || i>){
throw new RuntimeException(i+"没有对应的星期");
}
//定义表。
String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return weeks[i];
}
}
三 小练习
3.1 "2012-3-17"转成日期对象
前面做了一个日期转文本(详见一),称为格式化,现在做的是文本转日期,称为解析
package cn.itcast.api.a.date; import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class DateTest { /**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// 练习2 :"2012-3-17"转成日期对象。
/*
* 之前有做过,将一个日期对象转成日期文本字符串这个称之为格式化。
* 现在要做的是文本--->日期对象:解析。
* 这些都是DateFormat中的功能。
*
* 不同日期风格的文本对应不同的格式器。
*/ String str_date = "2012年3月17日"; //日期格式器。DateFormat
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG); Date date = dateFormat.parse(str_date); System.out.println(date); //这种格式在给定的四种风格中不存在。怎么解析呢?只能使用子类SimpleDateFormat的方法,
//1,构造函数明确特定风格,2,applyPattern 方法来修改格式模式
str_date = "2013/3/17 17--13--45";
DateFormat dateFormat2 = new SimpleDateFormat("yyyy/MM/dd hh--mm--ss");
Date date2 = dateFormat2.parse(str_date);
System.out.println(date2); } }
3.2 获取多少天
package cn.itcast.api.a.date; import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date; public class DateTest2 { /**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// 练习3,"2013-4-25"到"2013年7月29日"到底有多少天?
/*
* 思路:
* 1,到底有多少天?相减的过程。
* 2,字符串也不能相减啊,毫秒值可以相减。
* 3,怎么获取毫秒值呢?毫秒值-->日期对象, 日期对象-->毫秒值。
* 4,怎么获取日期对象呢?需要将字符串文本--解析-->日期对象。
*/ String str_date1 = "2013-4-25";
String str_date2 = "2013年7月29日";
//需要定义两个模式。一个解析str_date1,一个解析str_date2。
int style_1 = DateFormat.MEDIUM;//默认风格。
int style_2 = DateFormat.LONG;//默认风格。 int days = getDays(str_date1,str_date2, style_1,style_2);
System.out.println("days="+days); } private static int getDays(String str_date1, String str_date2,
int style_1, int style_2) throws ParseException { //1,根据给定风格创建格式器对象。
DateFormat format_1 = DateFormat.getDateInstance(style_1);
DateFormat format_2 = DateFormat.getDateInstance(style_2); //2,对文本进行解析。
Date date_1 = format_1.parse(str_date1);
Date date_2 = format_2.parse(str_date2); //3,获取日期对象毫秒值。
long time_1 = date_1.getTime();
long time_2 = date_2.getTime(); //4,相减。
long time = Math.abs(time_1 - time_2);
// System.out.println(time);
int day = (int)(time////);
return day;
} }
3.3 2月份天数
package cn.itcast.api.a.date;
import java.util.Calendar;
public class DateTest3 {
/**
* @param args
*/
public static void main(String[] args) {
// 4,获取给定年份的2月有多少天?【面试题】
for (int year = ; year <= ; year++) {
show(year);
}
}
public static void show(int year) {
Calendar c = Calendar.getInstance();//
// 有获取有设置 set
// c.set(Calendar.YEAR, 2011);
c.set(year, , );
// 时间是连续的,3月1日的前一天就2月的最后一天,知道2月份的天数。
c.add(Calendar.DAY_OF_MONTH, -1);
int year1 = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + ;
int day = c.get(Calendar.DAY_OF_MONTH);
String week = getCnWeek(c.get(Calendar.DAY_OF_WEEK));
// 打印信息中年月日等相关信息都在这里。获取指定字段的值就哦了。
System.out.println(year1 + "年" + month + "月" + day + "日 " + week);
}
public static String getCnWeek(int i) {
if (i < || i > ) {
throw new RuntimeException(i + "没有对应的星期");
}
// 定义表。
String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return weeks[i];
}
}
四 总结
2,获取的毫秒值怎么转成我们习惯的日期时间格式呢?
Date,DateForamt。
3,转换
3.1 毫秒值time--new Date(time) , date.setTime(time)-->日期对象date。
3.2 日期对象date--date.getTime()-->毫秒值time
3.3 格式化:日期对象date --DateFormat.getDateInstance(style).format(date)-->文本
3.4 解析:文本 --DateFormat.getDateInstance(style).parse(文本)-->日期对象date
4,获取DateFormat对象的几种方式。style: FULL LONG MEDIUM SHORT
4.1 getDateInstance(datestyle);
4.2 getDateTimeInstance(datestyle,timestyle);
4.3 new SimpleDateFormat(pattern)。
5,获取日期中的具体的字段。年 月 日 等。
5.1 使用Calendar对象。
5.2 get set add(对指定字段进行偏移
java-日期类的更多相关文章
- Java日期类:Date和Calendar的使用
总是使用这两个类,总是需要百度.还不如一次全部整理完. 一.介绍: Date 类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年 ...
- Java日期类题目
每类题都有各种各样解决的方式,大家随意发散 分析以下需求,并用代码实现 1.已知日期字符串:"2015-10-20",将该日期字符串转换为日期对象 2.将(1)中的日期对象转换为日 ...
- java 日期类 小结
import java.text.*; import java.util.*; class Test2 { public static void main(String[] args) { Syste ...
- JAVA日期类图解
- 全面解析Java日期时间API
时区 GMT(Greenwich Mean Time):格林尼治时间,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间. UTC(Universal Time ...
- Java:日历类、日期类、数学类、运行时类、随机类、系统类
一:Calendar类 java.util 抽象类Calendar 1.static Calendar getInstance()使用默认时区和语言环境获得一个日历. 2. int get(int ...
- HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)
Problem Description Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me wha ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java常用类之【日期相关类】
一.日期类 Java语言提供了2个类来处理日期 Date类 Date类以毫秒来表示特定的日期 构造方法 Date date = new Date(); System.out.println(date) ...
- 日期类的使用(java)-蓝桥杯
蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...
随机推荐
- C++Builder 常用String
关于AnsiSting的使用大全(1) arrow: Ansistring 转 char 代码: void __fastcall TForm1::Button1Click(TObject *Sende ...
- Zuul上传文件
对于1M以内的文件上传,无需任何处理,大文件10M以上需要为上传路径添加/zuul前缀,也可使用zuul.servlet-path自定义前缀 如果Zuul使用了Ribbon做负载均衡,那么对于超大的文 ...
- zabbix--------配置邮件报警功能---服务器上配置---------
--------配置邮件报警功能---服务器上配置--------- [www.aa.com@ ~]# yum install mailx -y [www.aa.com@ ~]# vi /etc/ma ...
- promise体验
promise的执行流程 promise串行执行异步 job1.then(job2).then(job3).catch(handleError); // 0.5秒后返回input*input的计算结果 ...
- 杂项-公司:Microsoft
ylbtech-杂项-公司:Microsoft 微软,是一家美国跨国科技公司,也是世界PC(Personal Computer,个人计算机)软件开发的先导,由比尔·盖茨与保罗·艾伦创办于1975年,公 ...
- shell 的基本理解
shell 事先通过一个变量设定好了多个路径,当用户输入命令时,shell会自动到这些路径(由左向右)以此查找 与命令名称相同的可执行文件 hash 用来保存以前曾经执行过的命令,以哈希表的方式保存, ...
- Leetcode950. Reveal Cards In Increasing Order按递增顺序显示卡牌
牌组中的每张卡牌都对应有一个唯一的整数.你可以按你想要的顺序对这套卡片进行排序. 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态). 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一 ...
- Unity 在2D中实现LookAt
由于Transform.LookAt是使Z轴看向目标,而2D基本是由X和Y轴构成的.所以在2D的游戏中,不太好使用. 所以用代码实现一个2D的LookAt函数. 例子: 我们使怪物的眼睛一直看着云. ...
- [转]C#线程同步(1)- 临界区&Lock
第一印象,C#关于线程同步的东西好多,保持了C#一贯的大杂烩和四不象风格(Java/Delphi).临界区跟Java差不多只不过关键字用lock替代了synchronized,然后又用Moniter的 ...
- set_clock_latency
set_clock_latancy用于定于虚拟时钟与真实时钟的延时 考虑最糟糕的情况,评估setup时数据会使用最大延时,时钟使用最小延时:评估hold时,数据使用最小延时,时钟使用最大延时.