Understanding the 14-Digit Time Format: Exploring PowerShell, Microsoft Office, and Office 365

Abstract: Parse 14-digit Windows FILETIME timestamps in PowerShell and Office metadata by decoding the YYYYMMDDHHMMSSFF structure.

Created: 2026-08-07 by

The 14-digit time format is a legacy representation of Windows FILETIME, encoding the number of 100-nanosecond intervals since January 1, 1601. It appears as YYYYMMDDHHMMSSFF (Year, Month, Day, Hour, Minute, Second, and Hundredths of a second). This structure ensures unique timestamps for file operations and metadata in Microsoft Office and PowerShell environments.

Decoding the Structure

To understand this format, you must break it down into its constituent parts. The string is always exactly fourteen characters long, representing specific components of a datetime object. The first four digits represent the year, followed by two digits for the month, two for the day, two for the hour, two for the minutes, two for the seconds, and finally two digits for hundredths of a second. For example, consider the timestamp 2023102514305512. Here is how it parses:
  • 2023: Year
  • 10: October
  • 25: Day
  • 14: Hour (2 PM)
  • 30: Minutes
  • 55: Seconds
  • 12: Hundredths of a second (0.12 seconds)
This granularity is significantly finer than standard Unix timestamps, which typically measure in whole seconds. The inclusion of hundredths of a second allows for precise ordering of events that occur within the same second, which is critical in distributed systems and file synchronization protocols.

Origin in Windows FILETIME

The primary source of this format is the Windows API function GetSystemTimeAsFileTime or similar structures used internally by the NTFS file system. Microsoft uses the FILETIME structure to represent dates and times as the number of 100-nanosecond intervals since January 1, 1601. This epoch was chosen because it aligns with the start of the Gregorian calendar reform, providing a consistent baseline for historical date calculations. When you see this format in PowerShell outputs, XML attributes, or Office document properties, it is often a direct serialization of this 64-bit integer value. While the internal storage is an integer, the textual representation strips the leading zeros from the integer but pads the individual components to ensure fixed-width readability. This padding is why the format remains strictly 14 digits. Understanding this origin helps explain why certain parsing libraries might fail if they expect a different epoch, such as January 1, 1970 (Unix Epoch) or January 1, 1900 (OLE Automation Date). Converting between these formats requires adjusting for the difference in starting points and the unit of measurement (nanoseconds vs. seconds).

Usage in Microsoft Office and Office 365

Microsoft Office applications frequently use this format when exporting metadata or interacting with older COM interfaces. You might encounter it in Word documents, Excel spreadsheets, or PowerPoint presentations when accessing low-level properties via VBA or external scripts. For instance, the creation date or modification date of a file stored in SharePoint Online may be exposed in this format through certain APIs or logs. In Office 365, while modern APIs like Microsoft Graph prefer ISO 8601 strings (e.g., 2023-10-25T14:30:55Z), legacy connectors or specific audit log exports might still return data in the 14-digit format. This is particularly common when integrating with on-premises Active Directory or when using older versions of the Office Interop assemblies. If you are working with calendar entries, you may need to parse these values to display them correctly in user interfaces. As discussed in our guide on Resolving Issues with Parsing Exact PowerShell DateTime in Office 365 Calendar Entries, handling these discrepancies is crucial for accurate scheduling and reporting. Ignoring the hundredths component can lead to subtle bugs where events appear out of order or slightly offset in time.

Handling the Format in PowerShell

PowerShell provides robust tools for converting this format back into native DateTime objects. Since PowerShell version 3.0, you can often use built-in methods to handle various date formats, but explicit conversion is sometimes necessary for this specific legacy string. One reliable method involves using the [datetime]::ParseExact static method. You define a custom format string that matches the 14-digit pattern. For example:
$dateString = "2023102514305512"
$format = "yyyyMMddHHmmssff"
$culture = [System.Globalization.CultureInfo]::InvariantCulture
$dateTime = [datetime]::ParseExact($dateString, $format, $culture)
This code snippet takes the string, applies the exact formatting rules, and returns a proper DateTime object that you can then manipulate, format, or compare using standard PowerShell cmdlets. The ff specifier in the format string specifically handles the hundredths of a second, ensuring no precision is lost during conversion. Additionally, if you are dealing with large datasets or performance-critical scripts, manual string manipulation might be faster than reflection-based parsing. You can extract substrings and construct the date manually, though this approach is less readable and more prone to errors if the input format varies slightly. For those managing tenant templates, understanding these underlying data representations is essential. Errors in template processing, such as those seen in PowerShell: Using Invoke-PnPTenantTemplate with Verbose and Error Handling for Office 365 Tenant Template Transfers, can sometimes stem from mismatched date formats between source and destination environments. Ensuring that all datetime fields are normalized before transfer prevents integrity issues.

Common Pitfalls and Best Practices

A common mistake is assuming the last two digits represent milliseconds. They actually represent hundredths of a second (centiseconds). One hundredth of a second is equal to 10 milliseconds. Therefore, a value of 50 in the last two positions means 500 milliseconds, not 50 milliseconds. Confusing these units can lead to significant timing errors in automation scripts. Another pitfall is timezone awareness. The 14-digit format itself does not contain timezone information. It is typically interpreted as UTC or local time depending on the context of the application generating it. Always verify whether the source system expects UTC or local time before applying conversions. If you are storing these values in a database or sending them over a network, explicitly tagging them with timezone information is highly recommended to avoid ambiguity. Finally, when validating inputs, always check the length of the string. A malformed timestamp might have fewer digits due to leading zeros being omitted in some contexts, although the standard representation usually pads them. Robust validation logic should reject strings that do not match the expected 14-character length and numeric-only criteria.

Frequently Asked Questions

Why does my Office document show a 14-digit number instead of a date?

This occurs because the document's metadata is exposing the raw Windows FILETIME value rather than a formatted human-readable string. Most modern UIs automatically convert this, but programmatic access or export functions may reveal the underlying integer representation. You can convert it using standard datetime parsing libraries.

Can I convert this format to Unix timestamp directly?

Yes, but you must account for the different epochs. First, parse the 14-digit string into a .NET DateTime object. Then, calculate the difference between that date and January 1, 1970, and divide by 100,000,000 to get seconds. Direct arithmetic without parsing will yield incorrect results due to the 1601 vs 1970 start date difference.

Is the hundredths of a second part always present?

In strict Windows FILETIME serializations, yes. However, some custom implementations might truncate trailing zeros or omit the last two digits for brevity. If you encounter shorter strings, assume the missing digits are zero or validate the input length before parsing to prevent exceptions.

How do I handle timezones with this format?

The format itself is timezone-agnostic. You must determine the timezone context from the surrounding data or documentation. If the source is UTC, treat the parsed DateTime as UTC. If it is local time, convert it accordingly. Always specify the Kind property of the DateTime object to avoid confusion during comparisons.

Does PowerShell have a built-in cmdlet for this?

No single cmdlet exists specifically for "14-digit to DateTime," but [datetime]::ParseExact is the standard and most efficient approach. Avoid using generic Get-Date parsing unless you are certain the input matches one of its supported default formats, which this specific legacy format often does not.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More