我在使用formatSimpleDateFormat对象的方法时遇到问题.
有问题的代码是:
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(date);
Run Code Online (Sandbox Code Playgroud)
其中"date"是使用Calendar.getTimeInMillis()中的long int创建的Date对象;
Calendar cal = Calendar.getInstance();
Date date = new Date(cal.getTimeInMillis());
Run Code Online (Sandbox Code Playgroud)
一切都工作正常,除了字符串的年份部分.当我传递日期时,输出的字符串如下所示:
0044-09-10 05:30:24
Run Code Online (Sandbox Code Playgroud)
传递的日期对象是从返回的长整数创建的:
Calendar.getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)
我相信从这个方法返回的数字是从1月1日开始的毫秒数.1970年,我认为是问题所在,但即使我在1970年增加了毫秒数(大声笑,可能是错误的事情,但值得一试:P),它仍然在0044中解析年份.
我已经做了很多谷歌搜索,所有似乎都指向传递给SimpleDateFormat构造函数的字符串中的简单问题,所以我在这里不知所措.
任何帮助是极大的赞赏.
如果需要任何其他信息,请告诉我,我会尽力提供.
再次感谢!
编辑:
我想我会更多地解释一下背景:
技术人员将进行呼叫,并在到达站点时将呼叫标记为"已启动".然后,应用程序将创建一个Calendar实例并保存从中返回的long int Calendar.getTimeInMillis().
当技术人员完成呼叫时,他/她将呼叫标记为"完成".同样,Calendar创建一个实例并Calendar.getTimeInMillis()保存返回的long int .
这允许简单的"呼叫持续时间"计算.
现在,当使用技术人员在应用程序中使用的结束表单时,在调用期间保存的长整数将传递给Date对象,然后将其传递给SimpleDateFormat.format()方法.
这就是问题出现的地方.再次感谢,希望这有帮助.