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);
}
}
}

最新文章

  1. 【转载】Mysql 查看连接数,状态
  2. js实现文本框限制输入数字和小数点--兼容多个浏览器
  3. Oracle 分页实现
  4. Demo学习: DownloadDemo
  5. 学C++不得不看的一篇文章[转]
  6. 怎样从 Google Play 下载 Android 程序到电脑上
  7. 玩转Windows服务系列&mdash;&mdash;服务运行、停止流程浅析
  8. java虚拟机详解
  9. 单例模式详解及java常用类
  10. synchronized和Lock复习
  11. 框架中的导航框架 &amp; position定位
  12. 重写select样式
  13. VS2012 C# 连接MySQL数据库
  14. 喵哈哈村的魔法考试 Round #15 (Div.2) 题解
  15. 掩膜 rcnn
  16. for语句练习 阶乘
  17. eclipse设置条件断点
  18. 对it行业的一些看法
  19. [CC-STREETTA]The Street
  20. quartz 防止上一任务未执行完毕,下一时间点重复执行

热门文章

  1. js获取URL参数的函数
  2. 0926MySQL中ICP索引下推
  3. 【ACM】hdu_zs1_1004_第二小整数_201307271529
  4. JavaThread等待/通知经典范式
  5. Tomcat启动时载入某个servlet
  6. [Wikioi 1226]倒水问题
  7. Linux正則表達式-定位元字符
  8. 开源前夕先给大家赞赏一下我用C语言开发的云贴吧 站点自己主动兼容-移动、手机、PC自己主动兼容云贴吧
  9. 第一次Java作业——简单的登录界面
  10. Adding Search