How to use the WC_DateTime class in WooCommerce
The WC_DateTime class in WooCommerce is a powerful tool for handling dates and times in WooCommerce-related projects. Based on PHP’s native DateTime class, it includes additional functionalities tailored specifically for the WooCommerce environment.
In this article, we’ll explore how to initialize the class, perform conditional checks, and format date outputs with practical examples.
What is the WC_DateTime Class?
WC_DateTime extends PHP’s native DateTime class, adding features such as:
- Compatibility with WooCommerce-specific time zones.
- Simplified methods for formatting dates.
- Seamless handling of conversions between UTC and WordPress-configured time zones.
Initializing a WC_DateTime Object
To create an instance of WC_DateTime, you can use various initialization methods. Here’s an example:
<?php
// Create a WC_DateTime object with the current date
$date = new WC_DateTime();
// Create a WC_DateTime object with a specific date
$specificDate = new WC_DateTime('2024-11-29 15:30:00');
// Create a WC_DateTime object with a specific time zone
$timeZone = new DateTimeZone('America/Lima');
$customDate = new WC_DateTime('2024-11-29 15:30:00', $timeZone);
echo $date->format('Y-m-d H:i:s'); // Standard format
Using Conditionals with WC_DateTime
You can compare dates using standard operators ( <, >, ==) or native comparison methods.
Example: Comparing Dates
<?php
$today = new WC_DateTime();
$eventDate = new WC_DateTime('2024-12-01 00:00:00');
// Conditional: Check if a date has passed
if ($eventDate < $today) {
echo "The event has already passed.";
} elseif ($eventDate == $today) {
echo "The event is today.";
} else {
echo "The event is in the future.";
}
Printing and Formatting Dates with WC_DateTime
The WC_DateTime class inherits PHP’s format() method for customizing outputs. It also offers additional methods like getTimestamp().
Example: Formatting Dates
<?php
$date = new WC_DateTime('2024-11-29 15:30:00');
// Custom format
echo $date->format('d/m/Y H:i'); // Output: 29/11/2024 15:30
// Get UNIX timestamp
echo $date->getTimestamp(); // Output: 1732889400
// Convert to WordPress time zone
$date->setTimezone(wc_timezone_string());
echo $date->format('Y-m-d H:i:s'); // Adjusted format
Common Use Cases for WC_DateTime in WooCommerce
This class is useful for handling dates in various WooCommerce-related functionalities. Here are some practical use cases:
Example: Get the Creation Date of an Order
<?php
$order = wc_get_order(123); // Replace 123 with the order ID
$orderDate = $order->get_date_created(); // Returns a WC_DateTime object
echo $orderDate->format('d/m/Y H:i'); // Output: Order creation date
Example: Check if a Subscription Has Expired
<?php
$subscription = wcs_get_subscription(456); // Replace 456 with the subscription ID
$endDate = $subscription->get_date('end'); // Get the end date
if ($endDate && new WC_DateTime() > $endDate) {
echo "The subscription has expired.";
} else {
echo "The subscription is active.";
}
The WC_DateTime class is a flexible and essential tool for handling dates and times in WooCommerce. Its integration with WordPress and WooCommerce configurations simplifies tasks like date comparisons, formatting, and managing time zones.
If you’re developing custom functionalities for WooCommerce, such as plugins or themes, mastering WC_DateTime will allow you to handle dates efficiently and professionally.
Have questions or feedback? Leave them in the comments below!

