最近在项目过程中测试突然发现一个这样有趣的现象,显示跟实际不一样,经多方查找资料,原来如此,废话不多说,上代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class SimpleDateFormatTest {
/**
* 简单的解释一下原因,我们知道,yyyy代表年,MM代表月,
* dd代表天,HH代表小时,mm代表分钟,ss代表秒,
* SimpleDateFormat应该是根据传入的值和初始化时候的format串进行匹配,
* 所有第一个2012-09-05,转换的结果就成了
* yyyy(2012) MM(没有给,默认值为01),dd(05), HH(00),mm(09),ss(00),
* 所以自然而然的就成了 2012-01-05.
* 关于第二个,输入的时间是2012-01-05 00:05:00,映射的结果为:
* yyyy(2012), mm(01),dd(05),HH(00),MM(01),ss(05),
* 所有应该就变成了 2012-05-05 00:01:00了。这个由于并不报错,这种错误有时候的潜伏期也比较长。
* @throws Exception
*/
public static void main(String[] args) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long time = format.parse("2012-09-05").getTime();
System.out.println(time);
System.out.println(new Date(time));
format = new SimpleDateFormat("yyyy-mm-dd HH:MM:ss");
time = format.parse("2012-01-05 00:05:00").getTime();
System.out.println(time);
System.out.println(new Date(time));
//得出的结论是Calendar得到的月份是从0-11的,所以需要正确 显示的话需要+1
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR)+"-"
+(c.get(Calendar.MONTH)+1)+"-"+(c.get(Calendar.DAY_OF_MONTH))+" "
+c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.MILLISECOND));
System.out.println("============================");
System.out.println(c.get(Calendar.DAY_OF_WEEK));
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//本月的最后 一天
Calendar lastDate = Calendar.getInstance();
lastDate.add(Calendar.MONTH, -1);// 减一个月
lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
str = sdf.format(lastDate.getTime());
System.out.println(str);
}
}
分享到:
相关推荐
在使用Layer UI框架进行前端开发时,表格列的日期格式化和处理自动填充日期的问题是常见的需求。Layer UI提供了一套强大的解决方案,使得我们可以轻松地对表格中的日期字段进行定制化展示。本文将详细介绍如何实现这...
每次遇到pandas的dataframe某列日期格式问题总会哉坑,下面记录一下常用时间日期函数…. 1、字符串转化为日期 str—>date import datetime date_str = '2006-01-03' date_ = datetime.datetime.strptime(date_str,'...
这些日期控件通常允许一定程度的自定义,包括更改显示样式、调整日期格式、添加事件监听等。对于更复杂的日期选择需求,开发者可能需要自定义控件或者利用现有的控件进行组合和扩展。 总的来说,Java日期控件是Java...
下面是 UReport2 的使用指南和避坑手册。 UReport2 介绍 UReport2 是基于 Java 语言开发的报表工具,它提供了强大的报表设计和生成功能,能够满足各种报表生成需求。UReport2 支持多种数据源,包括关系数据库、...
总结来说,当我们使用JavaScript的new Date函数时,尤其是在Safari浏览器中,我们需要注意日期格式的问题。了解Safari的这一限制,并采取适当的转换措施,可以避免在实际应用中遇到日期解析错误的问题。同时,这也是...
- **`dt.ToLongDateString().ToString()`**:返回当前时间的长日期格式(如“2005年11月5日”)。 示例: ```csharp string longDate = DateTime.Now.ToLongDateString().ToString(); // 输出类似于 "2005年11...
例如,在iOS中使用`new Date("2018-08-08")`会导致`NaN`错误,因为iOS仅支持`new Date("2018/08/08")`这样的日期格式。 ```javascript // Android兼容的日期格式 var startDate = new Date("2018-08-08"); // 正确 ...
例如,将字符串转换为日期格式在Oracle中通常使用`TO_DATE`函数。给定文件中提到的`TO_DATE('2012-01-01', 'yyyy-mm-dd')`展示了如何将字符串'2012-01-01'转换为日期类型。 ```sql SELECT * FROM t1 WHERE acquisi_...
WEB层采用Spring MVC框架,将查询到的数据传递给APP端或客户端,这没啥,但是坑的是实体类中有日期类型的属性,但是你必须提前格式化好之后返回给它们。说真的,以前真没这样做过,之前都是一口气查询到数据,然后...
日期格式化 {日期格式化yyyy-MM-dd HH:mm:ss} 生成二维码 {日期格式化yyyy-MM-dd HH:mm:ss} redux {redux实践} 其它项目Demo angular1 豆瓣电影 angular1 Todos 图片居中适配案例 {手机, pc自适应小案例}
如果你的 JSON 数据中日期时间格式不一致,可以自定义时间格式的解析,或者使用第三方库如 `time.Parse()` 进行解析。 总之,在 Go 中处理 JSON 转换时,需要注意整数类型被转换为浮点数的问题,以及时间类型的正确...
在描述中提到,开发者最初是用`v-model`属性来绑定时间控件的值,这种情况下,时间可能会被转换为UTC格式,从而在某些时区中导致日期减少一天。为了解决这个问题,我们需要改变获取时间的策略,利用`@on-change`事件...
文档标题和描述中提到的是一个关于“日常养护工程绿化养护施工月报”的标准格式,用于记录和汇报一个月内绿化养护工作的各项详情。这份月报在实际的园林绿化维护管理中非常关键,它提供了对工程进度、工程质量、人员...
在JavaScript中,处理日期是一项常见的任务,特别是在计算和格式化日期时。本文主要讨论了如何正确获取当前月的最后一天,以及在这个过程中可能遇到的问题。首先,一个简单的技巧是,如果你想获取上个月的最后一天,...
联络函中多次提到按照电梯土建图要求进行施工,包括预留孔洞尺寸、呼梯盒的位置、底坑的防水处理、门套尺寸校正等,强调了土建工程与电梯安装的紧密配合。 3. **电梯调试与验收**:电梯安装完毕后,需要进行调试并...
当碰到日期时间的时候,你可能会遇到坑,需要格式化一下日期时间格式。 本文介绍org.json这种不需要导入任何包的解析方式,不管Json多少层,如探囊取物。 详见:...
yii gridview功能强大,但是时间筛选比较麻烦,与数据库的存储格式有关,本文的时间格式是date类型 那么问题来了,yii只提供关于时间的text搜索格式,就是只能查找精确...3.坑:选择日期后,输入框没有光标,需要二次点