Title: Intl DateTime Calendar
Author: Theerawat Patthawee
Published: <strong>2025-05-12</strong>
Last modified: 2026-08-29

---

Szukaj wtyczek

![](https://ps.w.org/intl-datetime-calendar/assets/banner-772x250.png?rev=3660962)

![](https://ps.w.org/intl-datetime-calendar/assets/icon-256x256.png?rev=3660962)

# Intl DateTime Calendar

 Autor: [Theerawat Patthawee](https://profiles.wordpress.org/sigmarubyz/)

[Pobierz](https://downloads.wordpress.org/plugin/intl-datetime-calendar.2.0.3.zip)

 * [Szczegóły](https://pl.wordpress.org/plugins/intl-datetime-calendar/#description)
 * [Recenzje](https://pl.wordpress.org/plugins/intl-datetime-calendar/#reviews)
 *  [Instalacja](https://pl.wordpress.org/plugins/intl-datetime-calendar/#installation)
 * [Rozwój](https://pl.wordpress.org/plugins/intl-datetime-calendar/#developers)

 [Wsparcie](https://wordpress.org/support/plugin/intl-datetime-calendar/)

## Opis

Intl DateTime Calendar changes how dates are written on your site without changing
what is stored. You pick a calendar. Your posts, archives and comments then show
dates the way your readers write them. Every date stays in the database exactly 
as WordPress saved it. The machine readable date that search engines look for stays
untouched.

#### What it does

 * **Any calendar system** including Buddhist, Hijri, Hebrew, Persian, Japanese,
   Indian, Coptic, Ethiopic and Chinese
 * **Native digits** so a Thai site can show ๔ พฤษภาคม ๒๕๖๘ and an Arabic site can
   show ٦ ذو القعدة ١٤٤٦
 * **Your existing date format** is respected, including any custom format set on
   an individual block
 * **Where it counts** on post dates, modified dates, comments and archives, and
   nowhere else. What a plugin stores is never touched
 * **Correct for search engines** because the underlying datetime attribute stays
   Gregorian and unambiguous
 * **No database changes** at all. Switching calendars or removing the plugin leaves
   your content untouched

#### Dates are written before the page is sent

On a host with the PHP intl extension, dates are converted on the server. Readers
see the right calendar immediately. There is no flicker as the page loads. Dates
remain correct for anyone browsing with JavaScript turned off. Under this setup,
the plugin adds no JavaScript to your pages.

If your host lacks the intl extension, everything still works. The conversion moves
to the browser and a small script is added to each page. Site Health tells you which
method your site is using.

#### Supported calendars

Gregorian, Buddhist, Chinese, Coptic, Dangi, Ethiopic, Ethiopic Amete Alem, Hebrew,
Indian, Islamic, Islamic Civil, Islamic Saudi Arabia, Islamic Tabular, Islamic Umm
al-Qura, ISO 8601, Japanese, Persian and Republic of China.

#### Supported digits

Every decimal numbering system Unicode defines, which is around 77 of them. The 
familiar ones are listed first. Western, Arabic Indic, Eastern Arabic Indic, Bengali,
Devanagari, Thai, Lao, Myanmar, Tibetan, Gurmukhi, Gujarati, Kannada, Malayalam,
Odia, Tamil, Telugu, Sinhala, Khmer, Han decimal and full width. Every other script
follows, each shown next to a sample of its digits.

Only the systems your server can actually write are offered, so the list matches
the version of ICU your host runs. You can also leave this alone and let the site
language decide.

### Privacy

This plugin does not collect, store or send any personal data.

## Zrzuty ekranu

[⌊The settings page, with a live preview of the chosen calendar and digits⌉⌊The 
settings page, with a live preview of the chosen calendar and digits⌉[

The settings page, with a live preview of the chosen calendar and digits

[⌊A Thai site showing Buddhist years with Thai digits⌉⌊A Thai site showing Buddhist
years with Thai digits⌉[

A Thai site showing Buddhist years with Thai digits

[⌊An Arabic site showing Hijri dates⌉⌊An Arabic site showing Hijri dates⌉[

An Arabic site showing Hijri dates

[⌊Site Health reporting that dates are converted on the server⌉⌊Site Health reporting
that dates are converted on the server⌉[

Site Health reporting that dates are converted on the server

## Instalacja

 1. Upload the `intl-datetime-calendar` folder to `/wp-content/plugins/`
 2. Activate the plugin through the Plugins menu
 3. Go to Settings, then Intl DateTime Calendar
 4. Choose a calendar, and choose your digits if you want something other than your
    language default

The preview on the settings page shows today’s date in whatever you pick, so you
can see the result before saving.

## Najczęściej zadawane pytania

### Does this change what is stored in my database?

No. Only the text a visitor reads changes. Every date is stored exactly as WordPress
stored it. You can switch calendars whenever you like. Removing the plugin puts 
everything back the way it was.

### Will this hurt my SEO?

No. Each date keeps its machine readable HTML datetime value in the Gregorian calendar.
Search engines read this value. Only the wording a person sees is converted.

### Does it work with the block editor?

Yes. Dates in the Date block, Query Loop, comments and archives are all covered.
This includes any custom format set on an individual block.

### Can I use it in my theme?

Yes.

    ```
    <?php
    if ( function_exists( 'intl_datetime_calendar_format_date' ) ) {
        echo intl_datetime_calendar_format_date( '2026-08-19' );
    }
    ?>
    ```

You can pass a date string, a Unix timestamp or a DateTime object, and a second 
argument to choose the format.

Or use the shortcode in your content.

    ```
    [intl_datetime date="2026-08-19" type="date"]
    ```

### Can different languages use different calendars?

Yes. On a multilingual site each language can have its own calendar, so a Thai reader
sees Buddhist years while an English reader on the same site sees Gregorian ones.
Use the `intl_datetime_calendar_calendar` filter to set this up.

### Another plugin reads dates from my pages and now gets confused. What do I do?

Only dates on their way to a page are converted. Scheduled jobs, REST and AJAX requests,
feeds and the admin are left alone, so anything another plugin stores or compares
stays Gregorian. If you still need to exclude something, use the `intl_datetime_calendar_should_convert`
filter, or turn off server rendering on the settings page.

### Can this break another plugin’s data?

No. Only dates on their way to a page are converted. A plugin that stores a date,
compares one, or formats one during a scheduled job gets the ordinary Gregorian 
value. If you write a plugin, prefer `current_datetime()` or `get_post_datetime()`
for anything you intend to store, since those are not display functions in the first
place.

### What is the intl extension and do I need it?

It is a standard PHP extension that most hosts already provide. You do not strictly
need it. However, with it, your dates are written before the page is sent instead
of in the reader’s browser. This is faster and works without JavaScript. Site Health
tells you whether you have it.

## Recenzje

Wtyczka nie ma jeszcze żadnej recenzji.

## Kontrybutorzy i deweloperzy

„Intl DateTime Calendar” jest oprogramowaniem open source. Poniższe osoby miały 
wkład w rozwój wtyczki.

Zaangażowani

 *   [ Theerawat Patthawee ](https://profiles.wordpress.org/sigmarubyz/)

[Przetłumacz wtyczkę “Intl DateTime Calendar” na swój język.](https://translate.wordpress.org/projects/wp-plugins/intl-datetime-calendar)

### Interesuje cię rozwój wtyczki?

[Przeglądaj kod](https://plugins.trac.wordpress.org/browser/intl-datetime-calendar/),
sprawdź [repozytorium SVN](https://plugins.svn.wordpress.org/intl-datetime-calendar/)
lub czytaj [dziennik rozwoju](https://plugins.trac.wordpress.org/log/intl-datetime-calendar/)
przez [RSS](https://plugins.trac.wordpress.org/log/intl-datetime-calendar/?limit=100&mode=stop_on_copy&format=rss).

## Rejestr zmian

#### 2.0.3

Fixes a bug that could corrupt dates another plugin had stored. Update if you run
2.0.0, 2.0.1 or 2.0.2.

 * Fix: Conversion applied to every date WordPress formatted, not only dates on 
   their way to a page. A plugin calling `wp_date( 'Y-m-d' )` to build a database
   key received a Buddhist Era year, and one calling it for a retention cutoff compared
   that against its Gregorian rows and deleted them
 * Fix: Conversion now happens on the display filters, which say a date is meant
   to be read, rather than on `wp_date`, which says nothing about intent. Filtering
   by format alone cannot tell the two apart, because a site may set its date format
   to `Y-m-d`
 * Fix: Scheduled jobs, REST and AJAX requests, XML-RPC, WP-CLI and feeds are left
   alone, so a job writing a date into a table cannot write a converted one
 * Improvement: The settings screen now says which dates conversion applies to

Themes calling `wp_date()` or `date_i18n()` directly are no longer converted. Use`
intl_datetime_calendar_format_date()` for those.

#### 2.0.2

 * Fix: The preview on the settings page showed dates in your own admin language
   rather than the language your visitors read. On a site whose language differs
   from the editor’s, it previewed months no visitor would ever see
 * Improvement: The preview now names the language it is showing, so there is no
   doubt which one it means

#### 2.0.1

Fixes a fatal error that could take the front end down after switching the site 
language.

 * Fix: Switching the site to a language ICU has no data for, such as South Azerbaijani,
   Saraiki, Hazaragi or Northern Kurdish, brought down the front end with a critical
   error. Those languages now keep the dates WordPress itself produces, which are
   already translated
 * Fix: A failed date formatter is no longer reused for the rest of the request,
   so one bad locale cannot repeat the failure on every date
 * Fix: A site with no language set no longer builds an invalid locale
 * Fix: A language with a region ICU does not carry now falls back to the language
   rather than giving up
 * Fix: Formatting can no longer raise out of the plugin at all. A date that cannot
   be converted is left as WordPress wrote it

#### 2.0.0

This release rebuilds how dates are formatted. Sites using the Gregorian calendar
see no change at all. We check this automatically against PHP’s own date function
on every commit.

New:

 * Dates are now written on the server where the PHP intl extension is available.
   There is no longer a flash of Gregorian dates while the page loads. Dates are
   correct without JavaScript.
 * Added a choice of digits covering every decimal numbering system Unicode defines.
   Thai, Arabic, Persian, Bengali, Devanagari, Khmer and many other sites can use
   their own numerals.
 * Relative dates such as „3 days ago” are now translated instead of being left 
   in English
 * Added the `intl_datetime_calendar_format_date()` function, which the FAQ has 
   described since 1.0.2 but which was never actually included
 * Added a Site Health check reporting whether dates are converted on the server
   or in the browser
 * Added the `intl_datetime_calendar_calendar`, `intl_datetime_calendar_locale`,`
   intl_datetime_calendar_numbering_system` and `intl_datetime_calendar_should_convert`
   filters
 * Different languages can now use different calendars on a multilingual site
 * Removing the plugin now cleans up its settings

Fixed:

 * Dates from the shortcode were up to a day out on any site not set to UTC. They
   published a timezone offset that did not match the time beside it.
 * Custom date formats were ignored. A format of `Y-m-d` and a format of `d/m/Y`
   both produced the same output, and any text or separator in a format was discarded
 * A 12 hour format such as `h:i A` produced output like `08 PM:5 PM`
 * Minutes and seconds lost their leading zero, so five past showed as `5` rather
   than `05`
 * Buddhist and Hijri dates leaked an era marker into numeric formats, giving `04/
   05/พ.ศ. 2568` instead of `04/05/2568`
 * Custom block formats were silently dropped for dates inside a Query Loop
 * Impossible dates such as 31 February were quietly changed to a real date instead
   of being reported
 * A date of 1 January 1970 was treated as invalid
 * Month names now take the correct grammatical form in Russian, Czech, Polish, 
   Catalan and other languages that inflect them
 * Rendering could stop the page with a fatal error on a server without PHP’s DOM
   extension
 * Block markup containing `<picture>` or `<source>` could be corrupted while dates
   were being processed
 * Three of the four block filters had never run, because the blocks they named 
   do not exist in WordPress

Changed:

 * Requires PHP 8.1 and WordPress 6.5
 * Block markup is now edited with WordPress’s own HTML API instead of a regular
   expression and an HTML4 parser
 * The settings page no longer uses an inline script
 * The browser script is only loaded when the server cannot convert dates itself
 * The minified script is now generated by a build step and checked automatically,
   instead of being maintained by hand

#### 1.0.3

 * Compatibility: Tested and confirmed working with WordPress 6.9
 * Performance: Added settings caching to reduce database queries
 * Performance: Added minified JavaScript for production environments
 * Performance: Removed jQuery dependency. It now uses vanilla JavaScript.
 * Feature: Added live date preview on settings page
 * Feature: Added 6 new calendar systems (Dangi, Ethiopic Amete Alem, Islamic variants)
 * Feature: Skip conversion for human-diff format elements
 * Fix: Prevent repeated date conversions (elements now processed only once)
 * Fix: Always use WordPress site language instead of browser language
 * Code Quality: Refactored regex patterns as class constants
 * Security: Added direct access prevention checks to all PHP files

#### 1.0.2

 * Security: Fixed authenticated (Contributor+) stored XSS vulnerability via date
   parameter (CVE-2025-8293)
 * Security: Added comprehensive input sanitization for all date inputs
 * Security: Added proper output escaping for all HTML attributes and content
 * Security: Implemented validation for shortcode parameters
 * Improvement: Enhanced date validation to prevent malformed input

#### 1.0.1

 * Renamed main plugin file to match WordPress.org naming convention (`intl-datetime-
   calendar.php`)

#### 1.0.0

 * Initial release
 * Support for 12 different calendar systems
 * WordPress block editor integration
 * Automatic locale detection
 * WordPress date/time format integration
 * SEO-friendly implementation
 * Thai Buddhist calendar special handling

## Meta

 *  Wersja **2.0.3**
 *  Ostatnia aktualizacja **1 miesiąc temu**
 *  Włączone instalacje **10+**
 *  Wersja WordPressa ** 6.5 lub nowszej **
 *  Testowano do **7.1.3**
 *  Wersja PHP ** 8.1 lub nowszej **
 *  Język
 * [English (US)](https://wordpress.org/plugins/intl-datetime-calendar/)
 * Tagi
 * [calendar](https://pl.wordpress.org/plugins/tags/calendar/)[datetime](https://pl.wordpress.org/plugins/tags/datetime/)
   [formatting](https://pl.wordpress.org/plugins/tags/formatting/)[i18n](https://pl.wordpress.org/plugins/tags/i18n/)
   [internationalization](https://pl.wordpress.org/plugins/tags/internationalization/)
 *  [Widok zaawansowany](https://pl.wordpress.org/plugins/intl-datetime-calendar/advanced/)

## Oceny

Nie przesłano jeszcze żadnych recenzji.

[Twoja opinia](https://wordpress.org/support/plugin/intl-datetime-calendar/reviews/#new-post)

[Zobacz wszystkierecenzje.](https://wordpress.org/support/plugin/intl-datetime-calendar/reviews/)

## Zaangażowani

 *   [ Theerawat Patthawee ](https://profiles.wordpress.org/sigmarubyz/)

## Wsparcie

Masz coś do dodania? Potrzebujesz pomocy?

 [Zobacz forum wsparcia](https://wordpress.org/support/plugin/intl-datetime-calendar/)