标准Java库中的带毫秒的DateFormat?

标准Java库中的带毫秒的DateFormat?,java,date,date-formatting,Java,Date,Date Formatting,我想知道在标准Java库中是否有一个静态的字符串或日期格式,用于“完全”格式化日期。我所说的完全是指日期和时间,包括毫秒和时区,类似于“”dd-MMM-yyy-HH:mm:ss.SSS-zzz”。我自己声明字符串很容易,但如果我不必为我使用的每个需要毫秒精度数据解析的项目声明字符串,那就太好了。到目前为止我还没找到 顺便说一句,我认为java.util.Date#toString()所表示的类不占毫秒数有点愚蠢 编辑-不幸的是,这并不像开始转换为DateTime使用那样简单,因为这不是我能控制的

我想知道在标准Java库中是否有一个静态的
字符串
日期格式
,用于“完全”格式化日期。我所说的完全是指日期和时间,包括毫秒和时区,类似于“
”dd-MMM-yyy-HH:mm:ss.SSS-zzz”
。我自己声明字符串很容易,但如果我不必为我使用的每个需要毫秒精度数据解析的项目声明字符串,那就太好了。到目前为止我还没找到

顺便说一句,我认为
java.util.Date#toString()
所表示的类不占毫秒数有点愚蠢


编辑-不幸的是,这并不像开始转换为DateTime使用那样简单,因为这不是我能控制的。我是该项目第二位最初级的开发者。我很想继续使用DateTime,但是如果没有我的主管的支持,我就不能使用。

对于Java 8日期时间Api,您也可以使用它

LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME);
对于这样的结果

2017-03-27T20:46:03.852

可能重复:@c0der我不是问如何格式化日期。我在问是否存在包含毫秒的静态格式。
java.util.Date::toString
方法不适合生产性使用。必须使用
DateFormat
生成字符串。更好的是,完全避免这些麻烦的遗留日期时间类,而使用java.time类。@BasilBourque我不建议使用
toString
方法。无论如何,它不支持毫秒。是的,我更喜欢DateTime实现,但不幸的是,我工作中的许多项目都是遗留项目,短期内不会转换:/不过,谢谢@lucasvw无需转换。您可以在新代码中使用java.time,而对遗留类的调用不会触及旧代码。在新旧代码重叠的地方,使用添加到旧遗留类中的新转换方法来回移动数据。如果使用Java6或Java7,而不是Java8或更高版本,那么该项目将为您带来很多Java.time功能。所有这些都是值得费心的,因为(a)遗留类真的那么糟糕,一团糟,(b)java.time类真的是一个巨大的改进。@anbat
LocalDateTime
故意丢失任何时区或UTC数据的偏移量。一般来说,最好保留这些有用的信息。不要使用
LocalDateTime
,而是使用
Instant.now()
表示UTC或
ZoneDateTime.now(ZoneId)
表示特定时区。@basil bourque是的,你是对的,如果你需要知道TZ或偏移量,你应该使用
Instant
ZoneDateTime
OffsetDateTime
视情况而定,但有时您使用的是一个本地TZ,因此仅使用LocalDateTime非常容易。