- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
now()
的以下代码针对一个对象执行了两次。一次表示它的创建,另一次表示它何时写入数据库。
在受控测试中,我设法可靠地重现了日期彼此之间差异很大的错误。有些日期似乎有正确的日期,但在 00:00:00
或接近 00:00:00
。
其他人似乎相对偏离了几个小时,从 1 小时到 16 小时甚至几周不等。我也有时间设定在未来。 Calendar.getInstance.getTime()
应该等同于 System.getCurrentTimeMillis()
,让后者偶尔返回一个 future 时间有点令人担忧。
我还没有发现任何问题,我打算进一步调查这个问题并在此处报告我的发现。
private static DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
public static String calendarToDb(Calendar cal) {
if (cal == null) {
return null;
}
return simpleDateFormat.format(cal.getTime());
}
public static String now() {
return calendarToDb(Calendar.getInstance());
}
这是来自 android-monitor 的日志的相关部分。这是一个真实的设备,而不是模拟器。 M 代表 MessageManager,P 代表 ContentProvider
08-30 18:07:17.267 M: main starttime = 2016-01-01T00:07:00+0100\
08-30 18:07:17.306 P: AsyncQueryWorker CreateTime = 2016-08-30T18:07:17+0200\
08-30 18:07:18.326 M: main starttime = 2016-01-01T00:00:00+0200\
08-30 18:07:18.371 P: AsyncQueryWorker CreateTime = 2016-08-30T18:07:18+0200\
08-30 18:07:19.898 M: main starttime = 2016-08-30T18:07:19+0200\
08-30 18:07:19.920 P: AsyncQueryWorker CreateTime = 2016-08-30T00:00:00+0100\
我的数据库中有更多看起来更奇怪的数据,根本不应该发生。
最佳答案
问题似乎最有可能出在静态
static DateFormat simpleDateFormat
正如此处所解释的: Why is Java's SimpleDateFormat not thread-safe?
存储中间结果,如果多个线程使用同一个实例(它们这样做是因为静态)。时间可以在方法执行过程中部分重置,这会扭曲当前处理的结果。
解决方案是每次都返回新的实例。
关于java - DateFormat 或 Calender.getInstance 有时会返回随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39251847/
我已经从代码隐藏动态生成文本框,一个类“DateTextBox”被设置为所有动态生成的文本框控件。日期选择器控件设置为类,但每个文本控件需要不同的日期格式。如何为每个文本框的 DatePicker 设
我正在开发一个不是我构建的网站,并且有一个页面不断在控制台中给出错误“Uncaught ReferenceError: dateFormat is not Define” 下面是包含错误的 JS(第
我认为这可能是 Android studio 的一个错误,不幸的是它阻止了我继续前进。 我正在使用(并选择!)android.text.format.DateFormat 作为我的 DateForma
我在android上阅读了一些关于格式化日期的帖子,像这样: How do you format date and time in Android? 人们建议使用 android.text.forma
其他类如 SimpleDateFormat 也是如此。Java 有一个 java.text.SimpleDateFormatAndroid 有 android.icu.text.SimpleDateF
我对 SimpleDateFormat 有疑问。 SimpleDateFormat dtfmt=new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.g
我尝试使用 SimpleDateFormat 解析日期,但遇到了奇怪的行为。 此示例在我的计算机上打印“Sun Jan 01 19:00:32 CET 2012”: import java.text.
上图是日期选择器,我点击确定后,结果如下图所示。 代码如下 public class DatePickerFragment extends DialogFragment implements
我正在尝试解析为“Mar 28,2017 13:00”类型的 Java 日期字符串。 我写了以下代码 DateFormat df = new SimpleDateFormat("MMM
如何将日期格式设置为以下 View 2018 年 10 月 21 日(月份大写)?我可以通过 "%1$TB %1$te, %1$tY" 模式获取它,但我需要通过 SimpleDateFormat 来完
例如: 用户可以输入 01/23/1983 或 1/23/1983 我如何使用 DateFormat 编写两种不同的格式,例如 (MM/DD/YYYY) 和 (M/DD/YYYY) 并将它们与实际日期
我可能忽略了一些东西,但是从字符串解析到日期对我来说无法正常工作。我有字符串:“20110705_060229”,格式为:“YYYYddMM_HHmmss” 这段代码: Date triggermom
我正在尝试使用 DateFormat 类和 格式模式来解析字符串 "20/08/18 13:21:00:428" “dd/MM/yy”“HH:mm:ss:SSS”。时区设置为 BST。 上述返回的日期
这就是我正在做的事情: SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Local
运行以下代码时出现意外输出, DateFormat df = new SimpleDateFormat("YYYY-MM-dd"); Date date = df.parse("2012-06-23"
我正在尝试将时差显示为一个字符串,该字符串遵循 00:00:00(小时:分钟:秒)的形式,并用零填充。我有以下代码: long timeDiff = System.currentTimeMillis(
我在将 json 对象中收到的日期转换为其所需的格式时遇到问题。我从后端获得的日期是 4 月 13 日,星期三,下午 04:06:00。这就是我所做的。 String refreshDateStrin
String selectedDate = "2012-" + createdMonth + "-" + createdDay; SimpleDateFormat dateFormat = new S
我想将 String 转换为 Date。我的代码: String maturityDate = "20150722"; SimpleDateFormat formatter = new
我通过 SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(DateinString) 将日期字符串转换为 Date。 这里不是转换为 UTC,而是转换为
我是一名优秀的程序员,十分优秀!