1. package day20190318;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. import java.util.Scanner;
  8. /**
  9. * 计算商品保质期并计算优惠时间
  10. * @author Administrator
  11. *
  12. */
  13. public class ProCalendarDemo {
  14.  
  15. public static void main(String[] args) throws ParseException {
  16. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
  17. Scanner input=new Scanner(System.in);
  18. System.out.print("请输入商品的生产日期:");
  19. String proc=input.next();
  20. System.out.print("请输入商品的保质期(月):");
  21. int exp=input.nextInt();
  22. Date sellDate=specialDay(sdf.parse(proc),exp);
  23. System.out.println("商品的促销日期为:"+sdf.format(sellDate));
  24. }
  25. public static Date specialDay(Date proc,int exp){
  26. Calendar proCal=Calendar.getInstance();//创建Calendar对象
  27. proCal.setTime(proc);//将时间设置为商品的生产日期
  28. //计算出商品的保质期
  29. proCal.add(Calendar.MONTH,exp);
  30. //将时间提前两个星期
  31. proCal.add(Calendar.WEEK_OF_MONTH, -2);
  32. //将促销的时间设置到本周星期五
  33. proCal.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
  34. return proCal.getTime();
  35. }
  36. }
  1. package day20190318;
  2.  
  3. import java.util.Calendar;
  4. /**
  5. * 日期处理
  6. * @author Administrator
  7. *
  8. */
  9. public class CalendarDemo {
  10.  
  11. public static void main(String[] args) {
  12. //创建Calendar对象
  13. Calendar now=Calendar.getInstance();
  14. now.set(Calendar.MONTH,4);
  15. //获取月份
  16. int m=now.get(Calendar.MONTH);
  17. System.out.println(m);
  18. //Calendar计算
  19. now.add(Calendar.MONTH,3);//增加月份数
  20. int n=now.get(Calendar.MONTH);
  21. System.out.println(n);
  22. System.out.println(now.getTime());
  23. }
  24.  
  25. }
  1. package day20190318;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. /**
  7. * 日期字符串格式化,字符串转换为日期
  8. * @author Administrator
  9. *
  10. */
  11. public class SdfDateDemo {
  12.  
  13. public static void main(String[] args) throws ParseException {
  14. Date now=new Date();
  15. //创建日期格式化对象
  16. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  17. String dateInfo=sdf.format(now);
  18. System.out.println(dateInfo);
  19. //将日期的字符串转换为date
  20. SimpleDateFormat adf=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
  21. Date date=adf.parse("2018/05/04 10:30:12");
  22. System.out.println(date);
  23. }
  24.  
  25. }

如果想要直接获取系统时间的话,这里提供一种较常用的实现方法:

  1. import java.util.Date;
  2. import java.text.SimpleDateFormat;
  3.  
  4. public class NowString {
  5. public static void main(String[] args) {
  6. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
  7. System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
  8. }
  9. }

  

另附上一道思考题:

根据员工入职时间和合同期计算下一次签订合同时间。
a.入职日期为指定格式字符串。yyyy-MM-dd
b.合同期单位为月
c.签订合同日期为到期前前一个月份的工作日(遇到周六、日顺延到下周一)
d.返回制定格式的字符串。 yyyy/MM/dd。

下面是我的想法:

  1. package day20190318;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. import java.util.Scanner;
  8.  
  9. public class StaffContract {
  10.  
  11. public static void main(String[] args) throws ParseException {
  12. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
  13. Scanner input=new Scanner(System.in);
  14. System.out.print("请输入签订合同时间:");
  15. String startCal=input.next();
  16. System.out.print("请输入合同期(月):");
  17. int month=input.nextInt();
  18. Date sellDate=SpecialDay(sdf.parse(startCal),month);
  19. System.out.println("续签合同日期为:"+sdf.format(sellDate));
  20. }
  21. public static Date SpecialDay(Date start,int month){
  22. //调用工厂方法
  23. Calendar startCal=Calendar.getInstance();
  24. startCal.setTime(start);
  25. startCal.add(Calendar.MONTH,month);
  26. startCal.add(Calendar.MONTH,-1);
  27. if(startCal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
  28. startCal.add(Calendar.DAY_OF_WEEK,+2);
  29. return startCal.getTime();
  30. }else if(startCal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
  31. startCal.add(Calendar.DAY_OF_WEEK, +1);
  32. return startCal.getTime();
  33. }else
  34. return startCal.getTime();
  35. }
  36. }

思维导图:

日期符号格式:

Java中日期格式(String、Date、Calendar)的相互转换的更多相关文章

  1. Java时间日期格式转换Date转String和String转Date

    Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @ ...

  2. java中日期格式的转换和应用

    java中主要有3个类用于日期格式转换    DateFormat .SimpleDateFormat.Calendar SimpleDateFormat函数的继承关系: java.lang.Obje ...

  3. JAVA中日期格式转换各个字母代表含义

    G  Era 标志符  Text  AD  y  年  Year  1996; 96  M  年中的月份  Month  July; Jul; 07  w  年中的周数  Number  27  W  ...

  4. Java中如何将String转成Date

    Java中如何将String转成Date 最近在开发Json数据反序列化为Java对象的时候发现spring mvc 和 Jackson 对Date类型对支持不是特别好,虽然在Java对象序列化为Js ...

  5. 【Java】【9】String Date Calendar之间的转换

    前言: 1, Calendar 转化 String 2, Calendar 转化 Date 3,Date 转化 String 4,Date 转化 Calendar 5,String 转化 Calend ...

  6. [java]转:String Date Calendar之间的转换

    String Date Calendar之间的转换 String Date Calendar  1.Calendar 转化 String Calendar calendat = Calendar.ge ...

  7. java中日期常用

    Java中日期的几种常见操作 —— 取值.转换.加减.比较 Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几 ...

  8. 聊聊 Java 中日期的几种常见操作 —— 取值、转换、加减、比较

    Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提 ...

  9. 【转】JAVA 8 日期/时间(Date Time)API指南

    前言 本来想写下Java 8的日期/时间API,发现已经有篇不错的文章了,那就直接转载吧~ PS:主要内容没变,做了部分修改. 原文链接: journaldev 翻译: ImportNew.com - ...

随机推荐

  1. mysql - Truncated incorrect DOUBLE value: 'undefined'

    mysql - Truncated incorrect DOUBLE value: 'undefined' 我是怎么遇到这个问题的? 我要从多个表里,查询统计数据,保存到统计表里,需要执行下面这种结构 ...

  2. java_基础_类加载

    类加载:Java命令的作用是启动虚拟机,虚拟机通过输入流,从磁盘上将字节码文件(.class文件)中的内容读入虚拟机,并保存起来的过程就是类加载. 类加载特性 :      *在虚拟机的生命周期中一个 ...

  3. Linux系统的命令应该如何记?

    Linux入门篇: 很多刚入门的同学,就像无头的苍蝇一样,到处找视频.书籍.网站帖子之类的学习方式,视频虽然讲得详细,但是时间的投入也是巨大的,播放时间,练习时间,加起来很吓人,其实啊很少有人能坚持把 ...

  4. Collections类

    1:一个类对象之间的比较两种方法 1)实现Comparator<String>类并且从写Comparator类中的compare方法, public class A implements ...

  5. 树莓派与Linux系统之间文件传输

    最近因为要学习Python,于是把放在家里接了一年灰的树莓派又给搜出来了,刚买那会也捣鼓了好一阵子, 基本操作都学会了,但现在又忘光了,只能又从头开始搞了,首先第一个要解决的是怎么把文件从电脑传输到树 ...

  6. python写算法中的栈

    ########### 栈的使用 ############### class StackFullError(Exception): pass class StackEmptyError(Excepti ...

  7. tensorflow 基本内容

    tensorflow的结构 1.使用图(graphs)来表示计算任务 2.在被称之为会话(Session)的上下文(context)中执行图 3.使用tensor表示数据 4.通过变量(Variabl ...

  8. angular开发手机网页小记

    禁用滑动事件,阻止触发浏览器翻页行为   <html lang="en" style="height:100%" ontouchmove="(f ...

  9. 【LeetCode每天一题】Add Binary(二进制加法)

    Given two binary strings, return their sum (also a binary string).The input strings are both non-emp ...

  10. js 获取鼠标的手势方向角度

    需要获取鼠标的移动角度 1.mousedown 确定起始点 2.mousemove 确立相关点 3.先计算两点的斜率,然后根据三角函数和反三角函数.转换为角度 <!DOCTYPE html> ...