使用 yyyy-MM-dd hh:mm:ss 格式解析的日期出现意外差异

2023-11-26

我运行下面的java代码来获取时差。

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;


public class Test 
{
    public static SimpleDateFormat simpleDateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    public static Date date1,date2;
    public static long diff; 
    public static String TAG ="DateConversion";
    public static Calendar cal1,cal2;

    public static void main(String a[])
    {
        checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 11:15:00");
        checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 12:15:00");
        checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 13:15:00");
    }

    public static  void checkTimeDifference(String strDate,String checkDate)
    {
        try 
        {
            simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
            date1    = simpleDateFormat.parse(strDate);
            date2    = simpleDateFormat.parse(checkDate);

            //in milliseconds
            diff = date2.getTime() - date1.getTime();
            System.out.println("Difference : "+diff);
            long diffSeconds = diff / 1000 % 60;
            long diffMinutes = diff / (60 * 1000) % 60;
            long diffHours = diff / (60 * 60 * 1000) % 24;
            long diffDays = diff / (24 * 60 * 60 * 1000);
            System.out.println(diffDays     + " days, ");
            System.out.println(diffHours    + " hours, ");
            System.out.println(diffMinutes+ " minutes, ");
            System.out.println(diffSeconds+ " seconds.");
        }
        catch (Exception e) 
        {
            System.out.println(""+e);
        }
    }
}

上述程序的输出是,

Difference : 3600000
0 days, 
1 hours, 
0 minutes, 
0 seconds.
Difference : -36000000
0 days, 
-10 hours, 
0 minutes, 
0 seconds.
Difference : 10800000
0 days, 
3 hours, 
0 minutes, 
0 seconds.

执行时返回负值"checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 12:15:00");"

为什么它的返回值是负值以及如何解决?


这就是问题:

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")

The hh这里的意思是“一天中的 12 个小时”,所以 12 意味着午夜,除非有什么东西表明它应该是中午 12 点。您的值 13 仅有效,因为解析器处于宽松模式。你要:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

我也强烈建议你使用乔达时间无论如何,对于这项任务,因为它使它成为lot更简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 yyyy-MM-dd hh:mm:ss 格式解析的日期出现意外差异 的相关文章

  • 在 Android 上解析查询字符串

    Java EE 有ServletRequest getParameterValues http java sun com j2ee sdk 1 3 techdocs api javax servlet ServletRequest html
  • 易失性变量的读-修改-写操作如何保证线程安全

    我正在阅读 JCIP 但无法理解 3 3 1 中的以下声明 只要您可以确保仅从单个线程写入易失性变量 对共享易失性变量执行读取 修改 写入操作就是安全的 在这种情况下 您将修改限制在单个线程中以防止竞争条件 并且易失性变量的可见性保证可确保
  • Twitter4j - 超出速率限制

    我想让追随者使用getFollowersIds 在 Twitter4j 中 但我得到 连接错误异常 超过限速 public static void main String args try Twitter twitter TwitterFa
  • 将文件从内部存储复制到外部存储

    我尝试使用 Adob e reader 读取从服务器下载的 pdf 文件 问题是当我将其存储在内部存储中时 其他应用程序无法读取该文件 现在我想知道我怎样才能Copy this 外部存储中的文件 sdcard 这样它就可以被pdf查看器查看
  • PSQLException 没有被捕获

    我正在使用 Tomcat 6 和 Postgresql 8 4 我的代码如下所示 try Prepared statement inserting something catch final PSQLException e LOG log
  • onchange 使用 radioChoice 获取当前值

    我尝试使用 radioChoice onChange 从无线电表单中获取选定的值 但似乎无法真正找到解决方案 onEvent 函数被调用 但从这里我不太确定如何获取该值 Code RadioChoice
  • 不支持的major.minor版本52.0错误[重复]

    这个问题在这里已经有答案了 我有在 JDK 1 8 上编译的代码 我创建了 war 文件并将其部署在运行 JRE 1 8 的 Ubuntu 服务器中的 Tomcat8 上 我打开主页的时候出现这个错误 java lang Unsupport
  • PowerMock,模拟静态方法,然后对所有其他静态调用真实方法

    我正在设置模拟类的静态方法 我必须在 Before 带注释的 JUnit 设置方法 我的目标是设置类来调用真正的方法 except对于那些我明确嘲笑的方法 基本上 Before public void setupStaticUtil Pow
  • Java中如何保存DOM文档?

    我在用DOM解析器和XPATH解析我的XML文件 我改变了一个节点的值Document Object 然而当我打开我的XML文件 它没有向我显示任何反射 我的DOM解析器代码如下 private void setPortNumber int
  • Retrofit 2.0b2:如何从响应中获取InputStream?

    我正在使用 Retrofit 2 0b2 收到响应后 我尝试通过以下方式从响应中获取 InputStream Response
  • Java 中 float 和 double 基元的比较

    我发现了Java的一个奇怪的角落 我觉得很奇怪 double dd 3 5 float ff 3 5f System out println dd ff 输出 正确 double dd 3 2 float ff 3 2f System ou
  • JSF中直接更改URL来限制用户访问页面

    我的应用程序中有两种用户 客户和卖家 我正在使用一个PhaseListener在JSF中防止用户在未登录的情况下访问页面 但在登录后我不知道如何防止用户更改地址栏中的URL并访问他也不允许的页面 例如 阻止客户访问卖家页面 有谁知道我如何防
  • 亚马逊 AWS Java API。我看不到我的 AMI

    我正在使用 Amazon AWS 的 Java API 我成功进行了身份验证 然后获取了所有图像 但我的图像不在其中 我的 AMI 是私有的 但我想自从我经过身份验证后我仍然会看到它们 这是我的来源 final AmazonEC2 clie
  • 在Java中执行.lnk文件

    我需要在java中执行 lnk文件 指向exe文件的lnk文件 我能怎么做 在 VB net 中我做 Process Start path 它有效 谢谢你的帮助 Use a 流程构建器 http download oracle com ja
  • 如何仅通过一次映射查找来增加给定键的值?

    假设我有一张地图 var inventory mutableMapOf apples to 1 oranges to 2 我想将苹果的数量增加一个 但这不起作用 inventory apples Error 9 4 Variable exp
  • 如何在java中模拟SHIFT+鼠标按键

    我想将鼠标指针移动到特定位置并执行 SHIFT 鼠标右键单击 我可以将鼠标移动到某个位置 但无法模拟鼠标单击 Robot r new Robot r mouseMove x1 y1 我应该做什么来模拟预期的鼠标点击 我认为您只需要一点额外的
  • 将自定义方法映射器映射到 Mapstruct

    我正在创建一个 poc 以便在我未来的项目中使用 Mapstruct 现在我有一个问题如何将自定义方法映射到特殊目标 例如我有以下接口映射器 Mapper public interface ItemMapper static ItemMap
  • 使用Java在数组中查找子字符串索引

    我想使用 Java 从字符数组中返回用户输入子字符串的索引 该数组被初始化 打乱 然后进行搜索 我对此很陌生 尝试了两种不同的方法但没有成功 我在忽略什么 提前致谢 方法一 import java lang Math import java
  • 将 s:element 和 s:complexType 命名为相同的名称

    将 s element 和 s complexType 命名为相同名称是否合法 可以看到下面的代码 element和complextype具有完全相同的名称 这是 wsdl 文件的一大块
  • java中的^运算符[重复]

    这个问题在这里已经有答案了 谁能用一些例子解释一下java中 运算符的使用 这与大多数语言中的 相同 只是异或 false false false true false true false true true true true fals

随机推荐

  • string1 >= string2 未在 Linq to SQL 中实现,有解决方法吗?

    如何在 Linq to SQL 中执行 string1 gt string2 如果您正在寻找 gt 通常会写成 gt 那么你不能直接用字符串来做到这一点 您可以通过以下方式获得相同的行为相比于 string1 CompareTo strin
  • 这是角度模板缓存清除的好方法吗?

    我正在尝试在我的角度应用程序上实现一些缓存清除 其方式仍然允许缓存 但在我们将新代码推送到生产环境时会破坏它 到目前为止 我的设置涉及使用 grunt 缓存破坏器https www npmjs org package grunt cache
  • 转到 HTML 中另一个页面的 div

    我想从不同的页面转到特定页面的 DIV 那可能吗 I tried a href file html product Hello a 但它只是去file html home thanks C 我的 file html 中有 但它不断被重定向到
  • Microchip PIC 的 Modbus 堆栈

    有人可以建议为 Microchip PIC18 处理器实现 Modbus RTU 从站的开源实现吗 我正在寻找 RS 232 RS 485 的 Modbus RTU 实现 但 Modbus TCP IP 实现也将受到欢迎 我已经为 PIC1
  • 如何在 IPython 笔记本中打开交互式 matplotlib 窗口?

    我正在使用 IPython pylab inline有时想要快速切换到交互式 可缩放的 matplotlib GUI 来查看绘图 当您在终端 Python 控制台中绘制某些内容时会弹出 我怎么能这么做呢 最好不要离开或重新启动我的笔记本 I
  • Android - 如何通过用户名以编程方式切换用户?

    我是 Android 新手 我必须在工作中创建一个执行以下任务的应用程序 我监听一个应该向我发送用户名的套接字 收到用户名后 我需要在平板电脑上切换到该用户帐户 如果我收到与当前活动用户相同的用户名 我不需要切换 显然 我们的平板电脑已获得
  • unaccent() 阻止 Postgres 中的索引使用

    我想从导入到 PostgreSQL 9 3 5 的 OpenStreetMap 数据库中检索给定名称的路线 操作系统是 Win7 64 位 为了具有一定的容错能力 我使用了 Postgres 的非重音扩展 我的查询如下所示 SELECT F
  • 使用补丁(Flask)进行单元测试行为

    我在尝试着patch我的 Flask api 中的方法 但似乎方法调用没有被替换 做app test client 做一些我所缺少的事情 例如 如果我跑 patch k stats mstats def test ps self mstat
  • 如果“设置”->“显示”->“显示尺寸”更改为“大”或“小”,则禁用应用程序或活动缩放

    在我的应用程序中 我不想允许它调整大小 因为它会产生设计问题 我尝试过android resizeableActivity false 在应用程序标签和启动器活动标签中 但它没有帮助 我已经找到了解决方案 如果系统文本大小更改或显示大小设置
  • socket.io 握手返回错误“传输未知”

    我正在尝试使用大象io将事件从我的 PHP 脚本发送到我的 Nodejs 服务器 使用这个库进行测试时 我注意到握手没有按预期发生 After 阅读有关客户端 服务器握手的规范使用socket io 我测试了对我的nodejs服务器的简单握
  • 春豆到底是什么?

    我还没有找到我能理解的 Spring bean 的高级定义 我在 Grails 文档和书籍中经常看到它们被引用 但我认为了解它们是什么会很有帮助 那么什么是Spring bean呢 如何使用它们 它们与依赖注入有什么关系吗 Spring核心
  • Symfony2:仅当复选框为真时,如何验证输入字段不为空?

    在 Symfony2 中 仅当复选框的值为 1 True 时 如何验证输入字段不是空白 否则允许空白 更准确地说 我有一个带有复选框的表单和一个带有文本类型的输入字段 在 Symfony 的实体上应该有一个检查 当复选框的值为 True 1
  • 根据接口生成表达式

    我遇到了例外无法将类型 MySomeTypeThatImplementsISomeInterfaceAndIsPassedAs T ToTheClass 转换为类型 ISomeInterface LINQ to Entities 仅支持转换
  • 重新分区(1) 和合并(1) 之间的区别

    在我们的项目中 我们使用repartition 1 将数据写入表中 我有兴趣知道为什么coalesce 1 不能在这里使用 因为repartition与coalesce I know repartition跨分区均匀分布数据 但是当输出文件
  • 如果使用.remove(),表单将无法提交?

    我对 Firefox jQuery 或两者都感到困扰 操作系统为 Windows 7 Firefox 版本为 4 0 1 jQuery 版本为 1 5 1 6 基本上我有一个表格button其中的元素 通过 jQuery 附加了一个单击事件
  • pandas.read_html 不支持小数逗号

    我正在使用读取 xlm 文件pandas read html并且工作几乎完美 问题是该文件使用逗号作为小数分隔符而不是点 默认在read html 我可以轻松地将一个文件中的逗号替换为点 但我有近 200 个具有该配置的文件 和pandas
  • 使用开发者工具时 IE9 是否启用“某些功能”?

    我正在使用 Google Maps Javascript API V3 最近我的地图上的图标没有显示在 IE9 中 为了弄清真相 我打开了IE的开发者工具 当我刷新地图时 图标出现了 然而 当我关闭 IE 并重新启动时 图标不存在 再一次
  • 没有会话绑定到当前上下文

    我按照这个教程进行操作 http nhforge org blogs nhibernate archive 2011 03 03 effective nhibernate session management for web apps as
  • TokenCache.BeforeAccess 上的 HttpContext.Current 为 null

    我正在使用 OWIN 和 OpenIDConnect 针对 Azure AD 测试一个 Web 项目 我正在使用此示例中的大部分代码 https github com Azure Samples active directory dotne
  • 使用 yyyy-MM-dd hh:mm:ss 格式解析的日期出现意外差异

    我运行下面的java代码来获取时差 import java text SimpleDateFormat import java util Calendar import java util Date import java util Tim