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. js_js流程控制

    1.表达式.语句 2.流程控制 顺序   分支   循环 分支   循环结构都有一个条件 循环结构:重复做一件事 3元运算符 switch语句(用来做相等性判断--优先考虑) 注意: 1.switch ...

  2. NTSC PAL 介绍

    NTSC-J是日本地区的模拟 电视系统和视频显示标准,于2011年7月24日在全国47个县中的44个地区停止运营.模拟广播于2012年3月31日在2011年Tōhoku摧毁的三个县停止地震和海啸(岩手 ...

  3. transform:translate(-50%,-50%)实现水平垂直居中

    .content {    padding:10px;    background:green;    color:#fff;    position:absolute;    top:50%;    ...

  4. 阿里云Ubuntu 18.04安装图形界面

    #!/bin/bash #更新软件库 apt-get update #升级软件 apt-get upgrade #安装ubuntu桌面系统 apt-get install ubuntu-desktop

  5. Jmeter-----参数配置

    参数化配置: 设置为3个线程后,三个用户均能运行

  6. 学习STM32单片机,从菜鸟到牛人就是这样简单(配视频资料)

    我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的 ...

  7. rand和srand的用法

    首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数)表头文件: #include<stdlib.h> ...

  8. Android 跨进程数据共享

    Android 开发过程中,基于功能隔离.进程安全.进程保活等等考虑,我们经常需要为应用划分进程,然后不得不面临跨进程通信和跨进程共享数据的挑战. 跨进程通信 相对来说,跨进程通信比较简单,常用的方式 ...

  9. vue js判断长按触发及手指的上滑、下滑、左滑、又滑

    <span class="btn" @touchstart="touchstart()" @touchmove="touchmove()&quo ...

  10. linux c tcp p2p

    江湖上一直都有这位哥哥的传说,也有很多人说自己就他的真身! 但是... 今天分享一下TCP连接的P2P demo,江湖的规矩也要与时俱进... ———————————————————————————— ...