FILETIME & LDAP timestamps: guide and FAQ

How to read the 18-digit values, the special values, and where each answer comes from

日本語

▶ Open the FILETIME & LDAP Timestamp Converter

This page covers how to use the converter, what the special values mean, and five common questions. Every answer links to Microsoft documentation.

How to use it

  1. Paste an 18-digit value or a line like "pwdLastSet : 134…".
  2. Read the date in UTC, your time zone and one you pick.
  3. Pick a date to get the FILETIME and LDAP filter examples.
  4. Paste Get-ADUser or ldifde output to convert every timestamp.
Accepted formats
FormatExampleWhat it is
FILETIME (LDAP Integer8)134347122000000000100 ns intervals since 1601-01-01 00:00 UTC: pwdLastSet, lastLogon, lastLogonTimestamp, accountExpires, badPasswordTime, lockoutTime
Hex0x01DD2D4D7C4C800064-bit value; top bit set means negative (two's complement)
Interval (negative)-36288000000000maxPwdAge, minPwdAge, lockoutDuration, lockOutObservationWindow; this one is 42 days
Generalized time20260924083000.0ZwhenCreated, whenChanged; Z means UTC
Unix seconds / ms1758702600Since 1970-01-01 UTC (10 or 13 digits)
.NET DateTime.Ticks639000000000000000100 ns since 0001-01-01; offset from FILETIME 504911232000000000

"Auto" reads 10–11 digits as Unix seconds, 12–14 digits as Unix milliseconds and anything else as FILETIME. If a FILETIME would land after 2200, the .NET ticks reading is shown too.

Special values: 0, 9223372036854775807 and negatives

accountExpires 0 or 9223372036854775807 means never expires. pwdLastSet 0 means the user must change the password at next logon. Negative values such as maxPwdAge are intervals, not dates.

All special values
AttributeValueMeaning
accountExpires9223372036854775807 (0x7FFFFFFFFFFFFFFF)Never; default for a new account
accountExpires0Never; set when an end date is removed
pwdLastSet0Must change password at next logon (unless Password never expires)
pwdLastSet-1 (write only)Clears "must change password at next logon"
lastLogon, lastLogonTimestamp0No record
lockoutTime0Not locked out
msDS-UserPasswordExpiryTimeComputed9223372036854775807Password never expires (flag set, smart card required, computer or trust account, or unlimited maximum age)
msDS-UserPasswordExpiryTimeComputed0pwdLastSet is 0 or not set
maxPwdAge-9223372036854775808 (0x8000000000000000)Unlimited maximum password age

msDS-UserPasswordExpiryTimeComputed holds the actual password expiry, including fine-grained password policies. lastLogon is stored per domain controller and is not replicated.

Frequently asked questions

How do I convert pwdLastSet or lastLogonTimestamp to a date?
The value counts 100-nanosecond intervals since 1601-01-01 UTC. Paste it here, or run [datetime]::FromFileTimeUtc(value) in PowerShell or w32tm /ntte value.
Why is lastLogonTimestamp not the real last logon time?
It only updates when the stored value is older than now minus msDS-LogonTimeSyncInterval (14 days by default), so it can lag 9–14 days. For the exact time, compare lastLogon on every domain controller.
What does accountExpires 9223372036854775807 mean?
Never expires; 0 means the same. When a date is set, Active Directory Users and Computers shows the day before as "End of".
Why is maxPwdAge negative?
Intervals are stored as a negative count of 100 ns units: -36288000000000 is 42 days. The password expires at pwdLastSet plus the absolute value.
How do I convert a FILETIME in Excel?
Use =A1/864000000000-109205 for UTC and add your offset in hours divided by 24. Excel keeps 15 digits, so sub-second precision is lost.

Sources

Sources: Microsoft Learn (Active Directory Schema and others), [MS-ADTS], [MS-SAMR]. Last checked 2026-09-24.

Links to the documents

Notes and your data

Feedback form (Google Forms, in Japanese; you can write in English). We read every message but do not reply.

Site-wide: About · Privacy policy.

Changelog