java开发中,常涉及到时间的处理,这里就做一个总结,同样也是一个笔记。

相关类及概念

1. java.util.Date:表示特定的瞬间,精确到毫秒.由于API 不易于实现国际化,日期和时间字段之间转换等方法已被废弃。
2. java.sql.Date:父类为java.util.Date,它包装了毫秒值的瘦包装器。toString方法后,yyyy-MM-dd。初始化需指定时间点毫秒数。多用于与数据库交互相关的时间设定。下同
3. java.sql.Time:与 java.util.Date 类有关的瘦包装器。返回特定时间点毫秒数下的HH:mm:ss
4. java.sql.Timestamp:与 java.util.Date 类有关的瘦包装器,同上,格式为:yyyy-MM-dd HH:mm:ss.SSS
5. java.text.SimpleDateFormat:以与语言环境有关的方式来格式化和解析日期的具体类。允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化.
6. java.util.Calendar:一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
7. java.util.GregorianCalendar:是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统

场景

  a.格式转换

    字符串-> 日期(aDate=2018-11-22)

     1、通过SimpleDateFormat的parse方法

 SimpleDateFormat pattern=new SimpleDateFormat("yyyy-MM-dd");
Date date1=pattern.parse(adate);

    2、通过Timestamp的valueof

String atime="1977-06-05 10:05:23.423";
Timestamp atim=Timestamp.valueOf(atime);

  b. 获取时间

    1、当前瞬间

日期 Date date=new Date();
毫秒数 System.currentTimeMills;
日历 Calendar.getInstance();

    2、指定毫秒数(12345678910L)

日期:Date date1=new Date(12345678910L);
毫秒数(无)
日历
Calendar calendar= new GregorianCalendar();
calendar.setTime(new Date(12345678910L));
Integer year=calendar.get(Calendar.YEAR);

    3、指定日期

日期(无)
毫秒数
GregorianCalendar greCalendar=new GregorianCalendar(2018,11,22,5,7,8);
Long millSeconds=greCalendar.getTime().getTime();
日历(毫秒数的翻版)
GregorianCalendar greCalendar=new GregorianCalendar();
greCalendar.setTime(date);

  c.指定格式

当前时间为例
Date date=new Date();
SimpleDateFormat pattern=new SimpleDateFormat("yyyy年MM月dd日 HH小时mm分钟ss秒");
System.out.pringln(pattern.format(date));

练习

假如有一个IT公司,有10个人每日轮流值班(A~J)监控系统。那么从本周一开始的100天内,请问周末值班最多是哪位?有多少天?

public class MapTest {
public static void main(String[] args) {
Map<String, Integer> hmap = new HashMap<>(); String str="ABCDEFGHIJ";
String[] strings=str.split(""); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = new GregorianCalendar();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTime(new Date());
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
if(hmap.get(strings[j])== null){
hmap.put(strings[j],1);
}else{
hmap.put(strings[j],hmap.get(strings[j])+1);
}
cal.add(Calendar.DATE,1);
}else{
cal.add(Calendar.DATE,1);
}
}
}
for (Map.Entry<String,Integer> entry:hmap.entrySet()){
System.out.println(entry);
}
}
}

Java常用类(I)-时间和日期的更多相关文章

  1. Java常用类之时间类

    JDK8之前日期时间API 1. java.lang.System类 2. java.util.Date类 3. java.text.SimpleDateFormat类 4. java.util.Ca ...

  2. 深入理解Java常用类-----时间日期

    除了String这个类在日常的项目中比较常用之外,有关时间和日期的操作也是经常遇到的,本篇就讲详细介绍下Java API中对时间和日期的支持.其实在Java 8之前时间日期的API并不是很好用,以至于 ...

  3. Java常用类:包装类,String,日期类,Math,File,枚举类

    Java常用类:包装类,String,日期类,Math,File,枚举类

  4. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  5. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

  6. Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...

  7. Java Calendar 类的时间操作

    Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...

  8. Java常用类的使用

    Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...

  9. Java常用类之要点总结

    Java常用类之要点总结

随机推荐

  1. Zend Studio快捷键汇总

    应用场景 快捷键 功能 查看快捷键 ctrl+shift+l 显示所有快捷键列表 查看和修改快捷键   打开Window->Preferences->General->keys 修改 ...

  2. php去除h5标签

    function html2text($str){  $str = preg_replace("/<style .*?<\\/style>/is", " ...

  3. 【微软2017年预科生计划在线编程笔试 B】Tree Restoration

    [题目链接]:https://hihocoder.com/problemset/problem/1490 [题意] 给你一棵树的以下信息: 1.节点个数 2.给出树的每一层从左到右的顺序每个节点的编号 ...

  4. eclipse断点调试教程

    1.断点就是你希望程序运行到哪暂停, 2.断点就是你希望程序运行到哪暂停, 3.断点就是你希望程序运行到哪暂停,断点往往就是你觉得程序可能出错的地方.  设定断点的办法很简单,在你认为出错的那一行的行 ...

  5. 基于DPI(深度报文解析)的应用识别2------实际分析

    新浪微博的分析 早上刚刚起床先刷微博,打算就分析一下新浪微博.登陆之后抓取公布微博的数据包.进行分析. 1.抓包的要点: 1.关闭其它网络应用,保证本机网络流量的干净,便于分析. 2.先开启wires ...

  6. JAVAEE之-----MySQL分页技术(带搜索)

    需求: 为什么须要採用分页技术呢?在数据库中我们查询数据的时候,须要将数据返回到显示页面.数据库中含有大量数据,所有显示在一个页面过于太多,所以我们须要採用分页技术.每一页显示不同数据. 主要解决这个 ...

  7. android小技巧:在activity中实现与绑定的fragment的回调

    看到标题你可能会想是一个多么高大上的技巧呢?事实上非常一般就是自己定义回调函数. 首先我们知道activity之间的数据传递有几种方式: 一是startActivityForResut()启动一个ac ...

  8. hdu 5411 CRB and Puzzle 矩阵高速幂

    链接 题解链接:http://www.cygmasot.com/index.php/2015/08/20/hdu_5411/ 给定n个点 常数m 以下n行第i行第一个数字表示i点的出边数.后面给出这些 ...

  9. PL SQL Developer client 连接server

    安装完Oracle,PLSQL之后,在server中打开监听. 计算机右键-管理-服务和应用程序-服务-打开以Oracle开头的服务,特别是监听,这个最重要.详细如图所看到的. (1)配置监听的位置 ...

  10. MFC 程序的运行流程

    CWinApp::InitApplication CMyWinApp::InitInstance CMyFrameWnd::CMyFrameWnd CFrameWnd::Create CWnd::Cr ...