package day20190318;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 计算商品保质期并计算优惠时间
* @author Administrator
*
*/
public class ProCalendarDemo { public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Scanner input=new Scanner(System.in);
System.out.print("请输入商品的生产日期:");
String proc=input.next();
System.out.print("请输入商品的保质期(月):");
int exp=input.nextInt();
Date sellDate=specialDay(sdf.parse(proc),exp);
System.out.println("商品的促销日期为:"+sdf.format(sellDate));
}
public static Date specialDay(Date proc,int exp){
Calendar proCal=Calendar.getInstance();//创建Calendar对象
proCal.setTime(proc);//将时间设置为商品的生产日期
//计算出商品的保质期
proCal.add(Calendar.MONTH,exp);
//将时间提前两个星期
proCal.add(Calendar.WEEK_OF_MONTH, -2);
//将促销的时间设置到本周星期五
proCal.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
return proCal.getTime();
}
}
 package day20190318;

 import java.util.Calendar;
/**
* 日期处理
* @author Administrator
*
*/
public class CalendarDemo { public static void main(String[] args) {
//创建Calendar对象
Calendar now=Calendar.getInstance();
now.set(Calendar.MONTH,4);
//获取月份
int m=now.get(Calendar.MONTH);
System.out.println(m);
//Calendar计算
now.add(Calendar.MONTH,3);//增加月份数
int n=now.get(Calendar.MONTH);
System.out.println(n);
System.out.println(now.getTime());
} }
 package day20190318;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 日期字符串格式化,字符串转换为日期
* @author Administrator
*
*/
public class SdfDateDemo { public static void main(String[] args) throws ParseException {
Date now=new Date();
//创建日期格式化对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateInfo=sdf.format(now);
System.out.println(dateInfo);
//将日期的字符串转换为date
SimpleDateFormat adf=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
Date date=adf.parse("2018/05/04 10:30:12");
System.out.println(date);
} }

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

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

  

另附上一道思考题:

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

下面是我的想法:

 package day20190318;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner; public class StaffContract { public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Scanner input=new Scanner(System.in);
System.out.print("请输入签订合同时间:");
String startCal=input.next();
System.out.print("请输入合同期(月):");
int month=input.nextInt();
Date sellDate=SpecialDay(sdf.parse(startCal),month);
System.out.println("续签合同日期为:"+sdf.format(sellDate));
}
public static Date SpecialDay(Date start,int month){
//调用工厂方法
Calendar startCal=Calendar.getInstance();
startCal.setTime(start);
startCal.add(Calendar.MONTH,month);
startCal.add(Calendar.MONTH,-1);
if(startCal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
startCal.add(Calendar.DAY_OF_WEEK,+2);
return startCal.getTime();
}else if(startCal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
startCal.add(Calendar.DAY_OF_WEEK, +1);
return startCal.getTime();
}else
return startCal.getTime();
}
}

思维导图:

日期符号格式:

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. String、StringBuilder以及StringBuffer

    博客地址:https://www.cnblogs.com/dolphin0520/p/3778589.html

  2. 2018-2019-2 20175320实验二《Java面向对象程序设计》实验报告

    2018-2019-2 20175320实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 (一)了解使用JUint,并对示例代码MyUtil进行测试 1.先在IDEA中安装J ...

  3. Django中web开发用md5加密图片名并存储静态文件夹

    一般在开发中,有的网站存在大量图片,首先图片的名称是不能重复的, 但是除了数据库可用的id以外我们可以用time模块中time.time()获取的时间来进行md5加密操作, 因为time模块所产生的时 ...

  4. Mac苹果电脑没有声音怎么办

    有时候 Mac 从睡眠状态恢复之后没有声音,这是 Mac OS X 系统的一个 Bug.这是因为 Mac OS X 的核心音频守护进程「coreaudiod」出了问题,虽然简单的重启电脑就能解决,但是 ...

  5. 线性表->顺序存储

    文字描述: 用一组地址连续的存储单元依次存储线性表的数据元素,只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构. 即是,线性表的顺序存 ...

  6. mysql查询两个日期之前相隔的天数

    select timestampdiff(SECOND,'2011-09-25 23:23:13','2011-09-26 22:23:11'); 其中SECOND同样可以改为HOUR,MINUTE

  7. 红黑树与AVL特性

    红黑树:比较平衡的二叉树,没有一条路径会比其他路径长2倍,因而是近似平衡的.所以相对于严格要求平衡的AVL树来说,它的旋转保持平衡次数较少.插入删除次数多的情况下我们就用红黑树来取代AVL. 红黑树规 ...

  8. 学习记录----简单的原生js路由

    在以前的web程序中,路由字眼只出现在后台中.但是随着SPA单页面程序的发展,便出现了前端路由一说.单页面顾名思义就是一个网站只有一个html页面,但是点击不同的导航显示不同的内容,对应的url也会发 ...

  9. 游戏全区全服和分区分服 QQ斗地主的设计

    游戏全区全服和分区分服  QQ斗地主的设计 https://cloud.tencent.com/community/article/164816001481011910?fromSource=gwzc ...

  10. 干了这杯Java之HashMap

    类: public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneab ...