`

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

阅读更多
问题场景:

生产环境程序运行过程中,统计数据不正确,查看日志发现一个固定的配置在数据库中的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.检查代码:跟踪源码



分享到:
评论

相关推荐

    js日期时间格式化日期时间格式化

    js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化

    易语言格式化时间和日期

    3. **格式化函数**:在处理时间日期时,我们常常需要将内部的数值转换为人类可读的格式,这就需要用到格式化函数。例如,“格式化日期”和“格式化时间”函数,它们允许开发者指定日期和时间的显示格式,如“年/月/...

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

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

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

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

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

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

    易语言格式化时间

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

    javascript的trim和日期时间格式化函数

    ### JavaScript中的Trim函数和日期时间格式化函数 在JavaScript中,字符串处理和日期操作是非常常见的需求,尤其是在数据清洗、格式转换等场景下。本文将详细介绍如何利用自定义方法实现字符串的Trim功能以及日期...

    易语言格式化现行时间

    在易语言中,处理时间和日期是常见的任务之一,"格式化现行时间"就是这样一个功能,它能够将系统当前的时间转化为用户指定的格式。 "格式化现行时间"主要涉及以下几个知识点: 1. **时间变量**:在易语言中,时间...

    易语言取格式化时间模块

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

    获取当前日期及格式化

    掌握这些日期时间函数和格式化方法对于数据库开发者来说是非常重要的,因为几乎所有的应用都会涉及到时间和日期的处理。 最后,在实际应用中,处理日期和时间需要注意时区和夏令时等问题。MySQL也提供了相关函数来...

    ios-时间格式化.zip

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

    易语言格式化时间和日期源码

    在易语言中,格式化日期和时间主要依靠“日期/时间转换”类的函数,如“日期转字符串”和“时间转字符串”。这些函数允许开发者自定义输出格式,如“年-月-日 时:分:秒”、“MM/dd/yyyy”等。例如,可以使用以下代码...

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

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

    JavaScript - 格式化日期时间.zip

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

    易语言格式化时间和日期源码.7z

    例如,我们可以使用“取当前时间”命令获取系统当前的时间,使用“日期时间到字符串”命令将日期和时间转换为易于阅读的文本格式,或者使用“字符串到日期时间”命令将文本形式的日期和时间解析为日期时间变量。...

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

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

    android 日期格式化

    在Android开发中,日期格式化是一项常见的需求,用于将系统时间或特定时间转换为易于阅读和处理的格式。本文将深入探讨几个关键的日期格式化方法,这些方法可以帮助开发者更好地管理和展示日期信息。 ### 一、基本...

    易语言格式化现行时间源码

    然后,我们可以使用“格式化时间”函数将这个时间结构体转换为我们想要的格式。 格式化时间通常涉及到以下几个要素: 1. 年:年份通常以四位数字表示,如2023。 2. 月:月份通常用1-12的数字表示,前面可能需要加0...

    格式化时间工具类

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

    robotframework格式化时间戳

    最后,使用`Log`关键字将格式化后的时间打印出来。 除了`FormatTimestamp`,`DateTime`库还提供其他与时间戳相关的功能,如`Convert To Timestamp`用于将日期字符串转换为时间戳,`Get Current Timestamp`获取当前...

Global site tag (gtag.js) - Google Analytics