`

为什么当天的时间格式化后却变为昨天的时间

阅读更多
问题场景:

生产环境程序运行过程中,统计数据不正确,查看日志发现一个固定的配置在数据库中的Date数据,在运行时被格式为其前一天的数据了

问题分析:

1.问题代码
DateUtil.format(Date,"yyyy-MM-dd"); 


2.本地测试
本地调用重新测试,发现问题,当天的时间被调用此方法后变为昨天的时间了,导致数据统计不正常

3.后来发现包路径不对,此方法不是工程的工具类
DateUtils

编码过程中少敲了一个s 却调用到了相同的方法,而测试过程中,没有对时间进行严格的测试

4.分析问题

DateUtil 是 org.apache.commons.httpclient.util 包下的工具类

    public static String formatDate(Date date, String pattern) {
        if (date == null) throw new IllegalArgumentException("date is null");
        if (pattern == null) throw new IllegalArgumentException("pattern is null");
        
        SimpleDateFormat formatter = new SimpleDateFormat(pattern, Locale.US);
        formatter.setTimeZone(GMT);
        return formatter.format(date);
    }


调用该方法的执行流程如下:
从表中获取Date类型数据,根据当前的时间  中国东八时区
然后格式时间,setTimeZone设置时区,需要减去8个小时
即实际格式化后的数值与理论上差了8个小时


问题总结:
1.细心:项目中使用的工具类均是以utils结尾
2.检查代码:跟踪源码



分享到:
评论

相关推荐

    iOS日期格式化类(刚刚、一分钟前、昨天、周几)

    "iOS日期格式化类(刚刚、一分钟前、昨天、周几)"这个主题聚焦于如何利用Objective-C来处理日期的本地化显示,使得时间表述更加直观易懂。在这个场景下,我们通常会用到`NSDateFormatter`类以及相关的辅助方法来实现...

    Js获取当前日期时间及格式化代码

    - 示例代码中展示了如何通过替换字符串来格式化日期时间,例如将年份替换为四位数年份,月份替换为两位数表示,星期天替换为汉字表示等。 - 其他日期时间脚本库方法包括日期计算、日期比较、日期转字符串、日期...

    易语言时间0格式化源码.zip

    4. **组合日期和时间**:在获取并格式化了日期和时间后,可以通过字符串连接操作,将两者合并成一个完整的日期时间字符串。 5. **自定义格式**:易语言允许用户自定义日期和时间的显示格式,例如“年-月-日 时:分:...

    易语言格式化时间

    在编程中,格式化时间通常是指将计算机内部存储的时间数据转换为人类可读的日期和时间字符串。例如,将时间戳转换为“年-月-日 时:分:秒”的形式。在易语言中,这可以通过特定的函数或方法实现。 "取格式化日期...

    时间格式化工具类

    1. **格式化日期和时间**:使用`DateTimeFormatter`创建自定义的格式模板,如"yyyy-MM-dd HH:mm:ss",将日期时间对象转换为字符串。 ```java public static String formatDate(LocalDateTime dateTime, String ...

    易语言取格式化时间模块

    本文将详细讲解易语言中的日期和时间处理,以及如何利用取格式化时间模块来获取和格式化日期时间。 在易语言中,时间数据通常以“日期时间”类型表示,它可以存储年、月、日、小时、分钟和秒等信息。要获取当前系统...

    C#日期格式化C#日期格式化

    本文将深入探讨C#中日期格式化的各种方法与细节,帮助开发者更好地理解和掌握日期时间的格式化技巧。 #### 标准格式与自定义格式 C#提供了多种内置的标准格式化模式,同时也支持高度灵活的自定义格式化。标准格式...

    ios-时间格式化.zip

    在iOS开发中,时间格式化是一项重要的任务,它涉及到如何将日期和时间数据转化为用户易于理解和阅读的形式。在“ios-时间格式化.zip”压缩包中,我们可以预见到包含的资源可能是一个示例项目或者代码片段,展示了...

    js通用日期格式化工具 date.js

    js通用日期格式化工具,直接引用该工具类就可以使用,方便快捷,建议大家收藏此工具类,该工具很好的解决了前端页面显示日期格式问题

    js 时间格式化

    这篇博客文章“js 时间格式化”可能探讨了如何使用JavaScript来优雅地展示和处理日期与时间。 在JavaScript中,`Date`对象是处理日期和时间的基础。创建一个`Date`对象可以获取当前时间,例如: ```javascript var ...

    JQuery 日期格式化插件,日期格式化,JS日期格式化

    JQuery 的一个日期格式化插件,支持"MM-dd HH:mm"等格式的设定;并支持日期时间转义,即距当前过去了多久,如"3分钟前","1天前","2周前".

    JavaScript - 格式化日期时间.zip

    在JavaScript中,日期和时间的格式化是一个常见的需求,特别是在创建动态网页或应用程序时。JavaScript提供了内置的Date对象来处理日期和时间,但默认的输出格式可能并不符合我们的需要。因此,我们需要学习如何...

    C#日期格式化汇总,迅速让你掌握日期格式化

    首先,C#中的日期格式化主要通过`DateTime.ToString`方法实现,它允许我们将日期和时间对象转换为各种预定义或自定义的字符串格式。这个方法接受两个参数:一个是格式字符串,用于定义输出的格式,另一个是`...

    java开发中时间格式化的所有方法

    在Java开发过程中,时间格式化是非常常见的需求之一,尤其是在处理日期与时间相关的业务逻辑时。本文将详细介绍Java中关于时间格式化的各种方法及其应用场景,帮助开发者更好地理解和掌握时间格式化的技巧。 #### ...

    格式化时间工具类

    在Java编程中,格式化时间是一项常见的任务,用于将日期和时间转换为人类可读的字符串格式。"格式化时间工具类"通常是指一个自定义的类,它封装了Java的日期时间处理方法,以便更方便地进行日期格式化、解析和比较。...

    python中日期和时间格式化输出的方法小结

    在Python中进行日期和时间格式化输出是一个常用且非常重要的功能,它允许用户按照特定的格式展示日期和时间数据。在Python的标准库中,`datetime`模块提供了很多处理日期和时间相关的功能。本小结将主要介绍`...

    Api格式化时间.rar

    3. **时间格式化**:Windows API提供了`GetTimeFormat`和`GetDateFormat`函数,它们可以根据指定的区域设置和格式选项来格式化日期和时间。例如,可以设置格式字符串来决定时间显示为"年-月-日 时:分:秒"还是"月/日/...

    易语言正则格式化时间

    在易语言中处理时间和日期是常见的任务,而“正则格式化时间”则是这一领域的一个关键知识点。正则表达式(Regular Expression)是一种强大的文本处理工具,可以用来匹配、查找、替换等操作。当与时间格式化结合时,...

    java来格式化日期为标准格式

    // 输出格式化后的日期时间 System.out.println("Formatted DateTime: " + formattedDateTime); } } ``` 这里,`DateTimeFormatter.ofPattern`方法用于创建日期时间格式器,其余过程与`SimpleDateFormat`类似。 ...

    VC 获取当前的日期、时间并格式化输出.rar

    //获取当前时间日期  m_strDate=m_time.Format("%x");//格式化日期  m_strTime=m_time.Format("%X");//格式化时间  m_strDateTime=m_time.Format("%Y-%m-%d %H:%M:%S 第%W周-%A");//格式化日期时间  ...

Global site tag (gtag.js) - Google Analytics