如何在java中改变new Date()的值

2023-12-13

在我的应用程序中,当测试人员测试应用程序时,需要经常更改日期和时间。目前,我们必须使用系统命令 date -s 来更改系统时间,但这会导致服务器上的其他应用程序也受到影响。我只想更改此应用程序的 Date(),但我不想想要改变应用程序本身,因为有很多地方使用了new Date


The java.util.DateAPI 非常非常古老。它被替换为CalendarAPI 也是旧的、过时的、糟糕的,而它又被java.timeAPI - 查看年龄j.u.Date is?

好歹,j.u.Date只是不允许你在这里需要什么。它不支持自定义时钟。

But java.time DOES.

您可以致电:Instant.now(),这相当于新的 APInew Date()(j.u.Date 的名字极其糟糕。它根本不代表日期;它代表时间的瞬间)。有一个变体调用:Instant.now(clock)。这可以让您选择一个自定义时钟。

安排代码获取要使用的时钟实例,例如通过依赖注入,或者有办法设置它,未设置的时钟意味着您默认为系统时钟(Clock.systemUTC()),但您可以实现自己的时钟实例,它确实可以完全满足您的需要:让测试代码“配置”时钟以返回测试所需的任何日期/时间,而根本不需要弄乱计算机的时钟。

因此,您的解决方案分为三步:

  1. 消除旧 API 的所有使用:java.text.DateTimeFormat, java.util.Date, java.sql.Timestamp,这些都需要消失。使用java.time.Instant, java.time.LocalDateTime, java.time.LocalDate, java.time.ZonedDateTime等等(新的 API 有更多的类型,因为时间本质上比j.u.Date认为是;这是旧 API 的众多缺陷之一。还消除对的所有调用System.currentTimeMillis()以及。任何通过过时的 API 获取“当前时间”的内容都需要被淘汰。

  2. 设置某种依赖注入解决方案(自己编写,或使用现成的解决方案,如 dagger、guice、spring 等),这样您就可以注入 Clock 的实例。使用Instant.now(clock)形式来获取“当前”日期和时间,而不是无参数Instant.now().

  3. 实现时钟的自定义实现,并使用它来设置代码中查询“当前日期/时间”以注入此“测试时钟”的所有各个点。

然后,瞧。测试瓦尔哈拉。

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

如何在java中改变new Date()的值 的相关文章

随机推荐

  • PHP - 根据另一个数组的元素对数组元素进行排序:)

    所以我有两个数组 其中之一看起来像这样 它的值或元素的数量可以改变 array 4dec def3 a3d6 d12f 和另一个 array array id gt d12f name gt John array id gt a5f1 na
  • 在文件夹/目录中搜索特定文件扩展名 (PHP)

    我正在尝试用 PHP 设计一个程序 该程序允许我在由多个文件夹组成的已知目录中查找具有特定文件扩展名 例如 jpg shp 等 的文件 示例代码 文档或有关我需要使用哪些方法的信息将非常感激 glob很简单 对于递归下降有一些建议readd
  • 如何在服务器和 GWT 客户端之间使用 RSA?

    我想加密 Java 服务器后端和 GWT 客户端之间的数据 在 GWT 客户端上我使用sbn js图书馆 它的工作速度非常快 而且比gwt 加密 以下是我如何在给定 RSA e n 的客户端进行加密 我创建了一个JSFiddle var n
  • 简单的 C++ 交换函数

    为什么如果我有这样的函数 要交换两个数字 它不起作用 swap 我知道我可以通过在原型中声明指针来做到这一点 然后将各个变量的地址传递给main 但适用于数组 无需传递指针和地址 不起作用 void num exchange int m i
  • 在 log(n) 时间内获取排序数组中落在特定范围内的元素数量

    假设我有一个以下类的数组 按 y 升序排序 public class Obj public int x public int y 如何找到数组中 y 值在 log N 时间内给定的最小和最大范围内的 Obj 项的数量 我考虑过使用二分搜索来
  • 将 pyspark 字符串转换为日期格式

    我有一个日期 pyspark 数据框 其字符串列的格式为MM dd yyyy我正在尝试将其转换为日期列 I tried df select to date df STRING COLUMN alias new date show 我得到一串
  • 如何为 Tomcat servlet 配置 user.dir?

    在我的 Tomcat servlet 中 我使用一个 jar 库来查找某些 properties文件在System getProperty user dir 问题是 当我在不同的服务器上部署 servlet 时 user dir 是不同的
  • 为什么 gnu 链接器的“--oformat binary”选项将“.data”段放置在 0x0200000

    我一直在为 i386 实模式编写一些 独立 代码 并在 PXE 网络引导我的代码时遇到一些奇怪的错误 PXE E79 NBP is too big to fit in free base memory PXE M0F Exiting Int
  • 如何理解这个 dmesg 错误信息?

    我编写了这个简单的模块来处理设备并调用其一些电源管理方法 例如 suspend and resume 在初始化时 模块简单地查找特定设备并尝试调用其方法 include
  • 如何实现条件字符串格式化? [复制]

    这个问题在这里已经有答案了 我一直在用 Python 开发一个基于文本的游戏 我遇到过一个实例 我想根据一组条件以不同的方式格式化字符串 具体来说 我想显示描述房间中物品的文本 当且仅当相关项目对象位于房间对象的项目列表中时 我希望在房间的
  • 流星 $pull 从数组中删除

    我的数据库中有以下对象 id fTgR2YtHiZBzzqF6J following user id S4dLHRJiuHoyAp26q fb id 100006681067911 name Helen Amffhajfgiaa Laube
  • 我需要使用 FileStream.Flush() 或 FileStream.Flush(true) 吗?

    在我的程序中 我编写一个文件 然后调用读取该文件的外部程序 我需要Flush true 确保数据完全写入磁盘 或者Flush 充足的 class ExampleClass IDisposable private FileStream str
  • 检查启动条件

    我想测试 ASP Net Core 2 0 应用程序启动时的某些条件 例如 如果我的数据库服务器或其他服务器运行正常 这对于仅在请求后才会实例化的事物 例如我的存储库 特别有用 目前我必须手动执行此请求 但我希望我的应用程序尽早失败 建议在
  • GotW #101“解决方案”真的能解决任何问题吗?

    首先阅读 Herb 的 Sutters GotW 帖子 内容涉及 C 11 中的 pimpl GotW 100 编译防火墙 难度 6 10 GotW 101 编译防火墙 第 2 部分 难度 8 10 我在理解 GotW 101 中提出的解决
  • 有没有办法在 JavaScript 对象文字中使用变量键?

    我有这样的代码 var key anything var object key key attribute 我想知道是否有办法替代key与 任何东西 like var object anything key attribute 在 ES6
  • 使用 pygame.mixer.music.get_endevent()

    我想要一个tkinter声音效果完成后不显示任何内容的标签 我一直在研究如何创建 初始化 捕捉音乐事件的结束 但没有运气 def play btn if mixer music get busy mixer music fadeout 10
  • Pandas 向量化函数 cumsum 与 numpy

    回答问题的同时Pandas Dataframe 的向量化计算 我注意到一个关于性能的有趣问题 我的印象是诸如df min df mean df cumsum 等被矢量化 然而 我发现两者之间的性能存在巨大差异df cumsum and a
  • Python 3 mySQL.connector 冻结导入库

    我是 Python 3 的新手 仍在学习 但我需要帮助 脚本的第一部分是 import mysql connector this is failing as a py but works in the shell cnx mysql con
  • 按运输方式在感谢页面上添加自定义消息

    仅当订单使用免费送货时 我才尝试向已收到订单 谢谢 页面添加一条消息 该消息可以替换标准的 谢谢 消息 也可以作为补充 这是我正在使用的代码 它基于这里的答案 根据 WooCommerce 中的运输方式自定义订单接收页面 add messa
  • 如何在java中改变new Date()的值

    在我的应用程序中 当测试人员测试应用程序时 需要经常更改日期和时间 目前 我们必须使用系统命令 date s 来更改系统时间 但这会导致服务器上的其他应用程序也受到影响 我只想更改此应用程序的 Date 但我不想想要改变应用程序本身 因为有