Java 7 NIO.2 Files.getLastModifiedTime time zone
date, datetime, java, jodatime, nio2
Solution
A Java millisecond timestamp is a UTC timestamp. It's what `FileTime.toMillis()` returns, and what the `DateTime` constructor expects. The same applies to other Java API methods; e.g. the `System.currentTimeMillis()` method, the `java.util.Date` constructor, and so on.
They all work the same way. And, indeed, so do other Unix / Linux / OSX library methods in other programming languages.
The only case where this breaks is if someone configures / sets the system clock incorrectly.
Problem
I'm writing a program which needs to determine files/directories last modified time. I want to handle this time using Joda Time, and I'm using Java 7 NIO.2 class `Files` to get file last modified time. Its `getLastModifiedTime()` method returns an instance of `FileTime` class, which has convenient method `toMillis()`, whose result I pass to Joda Time `DateTime` class constructor: ``` new DateTime(Files.getLastModifiedTime(path).toMillis()); ``` However, I have a feeling that I'm doing this wrong, since `DateTime(long)` constructor explicitly mentions that `DateTime` instance will be created with default time zone. `FileTime` docs, however, do not mention its time zone anywhere. I looked through `FileTime` code; it seems to be very simple, and its `toString()` method suggests that it is using UTC time zone (it creates a `Calendar` in UTC time zone and sets its milliseconds directly). So, does `FileTime` uses UTC or local time? What is the correct way to convert `FileTime` to `DateTime`?