package com.dev.tool.log.service; import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; /** * Created by kenny.dong on 2018/4/2. */ public class CalendarTest { /** * Calendar.getTime 方法是返回自1970-01-01 00:00:00 UTC(Epoch Time)的毫秒数,然后转化为Date类型。 * 现在有一个case是: * 当前时间是20180329,现在有一个year=2018,month=2的年份过来,想format为yyyyMM格式 * 如果你把年份和月份直接给到Calendar,问题就出来了 * @throws InterruptedException */ @Test public void calendarGetTime() throws InterruptedException, ParseException { int year = 2018; int month = 2; SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(format.parse("20180331")); calendar.set(Calendar.YEAR,year); calendar.set(Calendar.MONTH,month-1); String DateStr = format.format(calendar.getTime()); System.out.println(DateStr); /** * 输出结果为20180301,我们期望的输出结果应该为输出结果为20180201,怎么就整整多了一个月? * 这个是因为Calendar的set方法,仅仅是把月份的值给更改了。但是Calendar最终是根据毫秒数来推算 * 它所代表的时间的,那么他的DAY天数没有变,因为201802正好没有29号,那么Calendar就等于是2月28日 * 然后加1天,那么就是20180301了!如果当前时间是20180331,那么输出就是20180303啦! *所以使用Calendar,可以 calendar.set(Calendar.DAY_OF_MONTH,1);设为月初比较保险。 */ } @Test public void calendarGetTimeOk() throws InterruptedException, ParseException { int year = 2018; int month = 2; SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(format.parse("20180331")); calendar.set(Calendar.YEAR,year); calendar.set(Calendar.MONTH,month-1); calendar.set(Calendar.DAY_OF_MONTH,1);//设为月初 String DateStr = format.format(calendar.getTime()); System.out.println(DateStr); } }
相关推荐
"16丨用好Java8的日期时间类,少踩一些‘老三样’的坑.pdf"提到了Java 8的日期和时间API改进,它比旧的Calendar和Date类更易于使用。文档可能介绍了如何正确使用LocalDateTime、ZonedDateTime等新类,避免使用旧API...
开发者文档中一般会包含示例代码、最佳实践以及常见问题解答,帮助开发者避开开发过程中可能遇到的坑。 需要注意的是,使用Google API for Java可能会涉及到API使用限额,不同的API有不同的配额限制。当使用量超出...
scratch少儿编程逻辑思维游戏源码-米克 demo.zip
scratch少儿编程逻辑思维游戏源码-萝卜男孩拯救世界.zip
scratch少儿编程逻辑思维游戏源码-酷忍者.zip
教育科技_微信小程序_二手交易平台_大学校园二手书与物品循环利用公益系统_风华读书人校园二手交易平台_基于C2C模式的校内闲置物品交易系统_支持多校区独立运营的二手书交易平台_包含
全新UI彩虹外链网盘系统源码前后端美化模板整站 模版文件.zip
maoxig_nonebot-plugin-ai-timetable_32152_1745865455265
少儿编程scratch项目源代码文件案例素材-足球顶尖高手.zip
少儿编程scratch项目源代码文件案例素材-作战基地.zip
少儿编程scratch项目源代码文件案例素材-云端之上 1-4名玩家.zip
scratch少儿编程逻辑思维游戏源码-魔幻之塔.zip
scratch少儿编程逻辑思维游戏源码-楼层酷跑.zip
scratch少儿编程逻辑思维游戏源码-圈.zip
少儿编程scratch项目源代码文件案例素材-纸片马里奥自定义战役.zip
少儿编程scratch项目源代码文件案例素材-自由下落.zip
少儿编程scratch项目源代码文件案例素材-阻击蜈蚣.zip
健康监测与疾病预防_脉搏波分析_六轴加速度传感器_生理参数融合_STC12硬件采集_Android数据处理_SpringBoot后端_MySQL数据库_MatlabPython实验
音乐流媒体应用开发_基于JetpackCompose的跨平台开发_网易云音乐风格的多终端音乐播放器_包含手机平板电视手表四端适配的现代化音乐播放应用实现音乐发现播放列表管理个性化推
移动应用开发_Android_Kotlin_Jetpack_开源框架_课程表应用_学生管理_教育信息化_云舒课表_智能课表_课表提醒_成绩查询_主题定制_背景更换_自动静音_校园生