我有一些parsingstring并创buildDate对象的java代码。 在Linux上,一切工作正常,但在Windows上,它始终在19:00:00而不是00:00:00开始。 这里是代码:
if(currTask != null) { if((m = p0.matcher(currTask)).matches()) { date = new Date(Long.valueOf(m.group(2)) - Long.valueOf(m.group(1))); } else if((m = p.matcher(currTask)).matches()) { date = new Date(System.currentTimeMillis() - Long.valueOf(m.group(1))); } return padded(date.getHours())+":"+padded(date.getMinutes())+":"+padded(date.getSeconds()); }
返回的值是Windows上的问题。 这与Date中的某个方法如何在Windows上工作而不是Linux有些不一致? 谢谢你的帮助。
检查你的时区在两个平台上是一样的…我的猜测是,他们不是。 (打印出TimeZone.getDefault().getDisplayName()来查看默认值是什么。)
但是,您不应该使用Date.getHours() / getMinutes() / getSeconds() / getSeconds() 。 他们被弃用。 你可以使用Calendar …或者你可以咬紧牙关,使用Joda Time ,这是一个非常优秀的日期和时间API。
你的输入是什么样的,结果是什么?
差异必须在您的语言环境中。 在Linux上有影响这个的环境变量。 让我猜猜你在EST(GMT-5)?