ZetCode

Python time.asctime Function

Last modified April 11, 2025

This comprehensive guide explores Python's time.asctime function, which converts a time tuple to a human-readable string. We'll cover formatting, time conversion, and practical examples.

Basic Definitions

The time.asctime function converts a time tuple or struct_time to a 24-character string in the format 'Tue Jun 22 13:07:48 2021'.

Key characteristics: uses English day/month names, fixed-width output, and follows the C standard. If no argument is provided, it uses the current time from time.localtime().

Basic asctime Usage

The simplest use of time.asctime converts the current time to a readable string. This example shows basic usage with default values.

basic_asctime.py
import time

# Get current time as string
current_time = time.asctime()
print(f"Current time: {current_time}")

# Get time components
time_tuple = time.localtime()
formatted_time = time.asctime(time_tuple)
print(f"Formatted time: {formatted_time}")

This example demonstrates two ways to use asctime - with no arguments and with a time tuple. Both produce the same standard format string.

The output follows the pattern 'Weekday Month Day Hour:Minute:Second Year' with fixed field widths for consistent formatting.

Converting Specific Time Values

time.asctime can convert specific time values, not just the current time. This example shows converting a custom time tuple.

custom_time.py
import time

# Create a custom time tuple (year, month, day, hour, minute, second, ...)
custom_time = (2023, 12, 25, 15, 30, 0, 0, 0, 0)

# Convert to asctime format
formatted = time.asctime(custom_time)
print(f"Christmas 2023: {formatted}")

This creates a time tuple for Christmas Day 2023 at 3:30 PM and converts it to the standard string format. Note the tuple must have all 9 fields.

The weekday is calculated automatically from the date components, so we can use 0 for the weekday field in the input tuple.

Comparing asctime with strftime

While asctime provides fixed formatting, strftime allows custom formats. This example compares both approaches.

format_comparison.py
import time

now = time.localtime()

# Using asctime (fixed format)
print("asctime:", time.asctime(now))

# Using strftime (custom format)
print("strftime:", time.strftime("%a %b %d %H:%M:%S %Y", now))

# Different strftime format
print("Custom:", time.strftime("%Y-%m-%d %I:%M %p", now))

asctime always produces the same format, while strftime allows flexibility. The first strftime example replicates asctime's format.

Choose asctime for simple standardized output and strftime when you need custom date/time formatting.

Logging with asctime

time.asctime is useful for logging timestamps due to its consistent format. This example shows a simple logging function.

logging_example.py
import time

def log(message):
    timestamp = time.asctime()
    print(f"[{timestamp}] {message}")

log("Application started")
time.sleep(2)
log("Processing data")
time.sleep(1)
log("Application finished")

Each log message is prefixed with a standardized timestamp. The fixed-width format ensures consistent alignment in log files.

For production logging, consider Python's logging module which provides more features, but asctime works well for simple cases.

Time Arithmetic with asctime

This example demonstrates time arithmetic combined with asctime to show future/past times in readable format.

time_math.py
import time

def show_future_time(hours_ahead):
    now = time.time()
    future = now + (hours_ahead * 3600)
    return time.asctime(time.localtime(future))

print("Current time:", time.asctime())
print("In 5 hours:", show_future_time(5))
print("Yesterday:", show_future_time(-24))

We calculate future/past times by adding/subtracting seconds, then convert to readable strings. This shows how to combine time arithmetic with asctime.

Note that localtime converts the timestamp to local time before asctime formats it. For UTC times, use gmtime instead.

File Timestamps with asctime

time.asctime can format file modification times. This example shows file timestamps in human-readable format.

file_timestamps.py
import os
import time

filename = "example.txt"

# Create a test file
with open(filename, "w") as f:
    f.write("Test content")

# Get file modification time
mtime = os.path.getmtime(filename)
formatted = time.asctime(time.localtime(mtime))

print(f"File {filename} last modified: {formatted}")

# Clean up
os.remove(filename)

This gets a file's modification timestamp (seconds since epoch), converts it to local time, then formats it with asctime for display.

The same approach works for any timestamp value, whether from files, databases, or other sources.

Best Practices

Source References

Author

My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.

List all Python tutorials.