После небольшого количества проб и ошибок я получил следующее:
def date = "0x01ca60cf|0x94894000"
// Parse our hex numbers into a single number
def nums = Long.parseLong( date.split( /\|/ ).collect { it.replace( '0x', '' ) }.join( '' ), 16 ) / 10000
// MS calendar goes from 1600... Java's goes from 1970, so we need to make up the difference
nums += Calendar.instance.updated( year:1601, month:0, date:1 ).time.time
println "Converted date is ${new Date( nums as Long )}"
Вы, вероятно, захотите сделать гораздо больше тестов, чтобы убедиться, что это не просто случайность, я получил правильную дату в этом случае ...
У вас есть больше значений для проверки?
EDIT ...
Аааа ... единственное, в чем я не был уверен, это то, зачем мне нужно было / 10000
, но документация для тиков в объекте DateTime показывает, что:
Один тик представляет сто
наносекунды или одна десятая миллионная часть
второй. Есть 10000 тиков в
миллисекунды.
Что объясняет это: -)