Конвертировать T01D163DE49AED860 в datetime?

2

В списке Word MRU в реестре кажется, что T01D163DE49AED860 хранится как T01D163DE49AED860.

Любая идея, как я конвертирую это в datetime?

  • 0
    И каким должен быть результат именно как DateTime ? Я не делал этот формат раньше.
  • 0
    Это 10 февраля 2016 года 09:37.
Показать ещё 3 комментария
Теги:
datetime
ms-word
office-interop

2 ответа

3
Лучший ответ

Это значение реестра Hex. Ключ находится здесь:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup\Status

Dim regTime As Long = CLng(Registry.LocalMachine.OpenSubKey( _
    "SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup\Status").GetValue( _
    "LastSuccess"))
Dim dt As DateTime = DateTime.FromFileTimeUtc(regTime)
Me.Text = dt.ToLocalTime.ToString
  • 0
    Хммм так не думаю, потому что я получаю эту ошибку ... DateTime.FromFileTimeUtc ("T01D163DE49AED860") 'вызвала исключение типа' System.InvalidCastException
  • 0
    @MojoDK Конечно, вам нужно сначала преобразовать строку (без начального T) в числовое (длинное) значение. Именно это и делает ответ реестра в ответе.
Показать ещё 4 комментария
0

Я предполагаю, что вы уже читали, что T01D163DE49AED860 как string с Registry.GetValue мето д или что - то, выглядит как первый T символ указывает, что это значение времени и остальные это шестнадцатеричное значение, которое можно разобрать на long время первым.

Удалить первый T характер вашей строки, разобрать его, чтобы long с AllowHexSpecifier стилем и использовать FromFileTimeUtc метод, чтобы получить DateTime.

var s = "T01D163DE49AED860";
s = s.Remove(0, 1);
long long1 = long.Parse(s, NumberStyles.AllowHexSpecifier);
var dt = DateTime.FromFileTimeUtc(long1);

Но это возвращает 10.02.2016 08:37:34, если ваш текущий часовой пояс UTC +01:00 прямо сейчас, вы можете использовать ToLocalTime чтобы получить 10.02.2016 09:37:34;

var dt = DateTime.FromFileTimeUtc(long1).ToLocalTime();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню