# DateTimeFormat()

Formats a date object to a given string output.

```
DateTimeFormat( datetime=any, mask=string, timezone=timezone );
```

**Returns:** string

# Arguments

| Argument | Type | Required | Description | Default |
|----------|------|----------|-------------|---------|
| datetime | any | Yes | date object; for example, [now()](now.md) *Alias: date* |  |
| mask | string | No | Date time formatting mask (case sensitive): - `a,..,aaaa`: AM/PM marker (see also "t" and "tt"; Example:AM) - `d`: Day in month, no leading zero for single-digit days (Example:3) - `dd`: Day in month, leading zero for single-digit days (Example:03) - `D`: Day in year, no leading zero for single-digit days (Example:4) - `DD`: Day in year, leading zero for single-digit days (Example:04) - `DDD`: Day in year, 2 leading zero for single-digit days (Example:004) - `E,EE,EEE`: Day of week as a three-letter abbreviation (Example:Tue) - `EEEE`: Day of week as its full name (Example:Tuesday) - `F`: Day of week in month, no leading zero for single-digit days (Example:4) - `FF`: Day of week in month, leading zero for single-digit days (Example:04) - `G,GG`: Era designator (Example:AD) - `h`: Hour in am/pm (1-12), no leading zero for single-digit hours (Example:3) - `hh`: Hour in am/pm (1-12), leading zero for single-digit hours (Example:03) - `H`: Hour in day (0-23), no leading zero for single-digit hours (Example:14) - `HH`: Hour in day (00-23), leading zero for single-digit hours (Example:14) - `k`: Hour in day (1-24), no leading zero for single-digit hours (Example:15) - `kk`: Hour in day (1-24), leading zero for single-digit hours (Example:15) - `K`: Hour in am/pm (0-11), no leading zero for single-digit hours (Example:2) - `KK`: Hour in am/pm (0-11), leading zero for single-digit hours (Example:02) - `l,L`: milliseconds, with no leading zeros (Example:3) - `ll,LL`: milliseconds, leading zero for single-digit days (Example:03) - `lll,LLL`: milliseconds, 2 leading zero for single-digit days (Example:003) - `m,M`: Month as digits, no leading zero for single-digit months (Example:6) - `mm,MM`: Month as digits, leading zero for single-digit months (Example:06) - `mmm,MMM`: Month as a three-letter abbreviation (Example:Jun) - `mmmm,MMMM`: Month as its full name (Example:June) - `n,N`: minutes in hour, no leading zero for single-digit minutes (Example:3) - `nn,NN`: minutes in hour, leading zero for single-digit minutes (Example:03) - `s,S`: seconds in minute, no leading zero for single-digit seconds (Example:3) - `ss,SS`: seconds in minute, leading zero for single-digit seconds (Example:03) - `t,T`: one-character time marker string (Example:P) - `tt,TT`: multiple-character time marker string (Example:PM) - `w`: Week in year, no leading zero for single-digit hours (Example:27) - `ww`: Week in year, leading zero for single-digit hours (Example:27) - `W`: Week in month, no leading zero for single-digit hours (Example:2) - `WW`: Week in month, leading zero for single-digit hours (Example:02) - `y,yy,yyy`: Year as last two digits, leading zero for single-digit (Example:09) - `yyyy`: Year represented by four digits (Example:2009) - `z,zz,zzz`: General time zone as a 3 to 4 letter abbreviation (Example:PST) - `zzzz`: General time zone as its full name (Example:Pacific Standard Time) - `Z,..,ZZZZ`: RFC 822 time zone (Example:-0800) The following masks can be used to format the full date and time and may not be combined with other masks: - `short`: equivalent to "m/d/y h:nn tt" - `medium`: equivalent to "mmm d, yyyy h:nn:ss tt" - `long`: medium followed by three-letter time zone; i.e. "mmmm d, yyyy h:nn:ss tt zzz" - `full`: equivalent to "dddd, mmmm d, yyyy h:nn:ss tt zz" - `ISO8601/ISO`: equivalent to "yyyy-mm-dd'T'HH:nn:ssXXX" - `epoch`: Total seconds of a given date (Example:1567517664) (added in Lucee 6.0.0.83) - `epochms`: Total milliseconds of a given date (Example:1567517664000) (added in Lucee 6.0.0.83) | dd-MMM-yyyy HH:nn:ss |
| timezone | timezone | No | A datetime object is independent of a specific timezone; it is only an offset in milliseconds from `1970-1-1 00.00:00 UTC` (Coordinated Universal Time). The timezone only comes into play when you need specific information like hours in a day, minutes in a hour or which day it is as these calculations depend on the timezone. A timezone must be specified in order to translate the date object to something else. If you do not provide the timezone in the function call, it will default to the timezone specified in the Lucee Administrator (Settings/Regional), or the timezone specified for the current request using the function [setTimezone()](settimezone.md). You can find a list of all available timezones in the Lucee administrator (Settings/Regional). Some examples of valid timezones include: - AGT (for time in Argentina) - Europe/Zurich (for time in Zurich/Switzerland) - HST (Hawaiian Standard Time in the USA) - JVM (JVM / Server Default Timezone) |  |

# Examples

```cfml
	//format the date parts as like as dateformat()
	//formant the date & time by user defined date
	dateandtime = createDateTime(2015,02,04,11,22,33);
	writeDump(dateTimeFormat(dateandtime, "GG-dddd, dd/mmm/yyyy,hh:nn:ss tt,zzzz"));

	//formant the date & time by server time
	dateandtime = createDateTime(year(now()),month(now()),day(now()),hour(now()),minute(now()),second(now()));
	writeDump(dateTimeFormat(dateandtime, "dddd, dd/mmm/yyyy,hh:nn:ss tt,zzzz"));
	writedump(dateTimeFormat(now(), "mm/dd/yyyy"));	
	writedump(dateTimeFormat(now(), "MM/DD/YYYY"));
	writeDump(dateTimeFormat(now(), "EEEE-dd,mm,yyyy"));

	//Member function
	dt=createDate(2015,04,14);
	writedump(dt.dateTimeFormat("full"));
	writedump(dt.dateTimeFormat("long"));
	writedump(dt.dateTimeFormat("medium"));
	writedump(dt.dateTimeFormat("short"));
	writeDump(dt.dateTimeFormat("GG-dddd, dd/mmm/yyyy,hh:nn:ss tt,zzzz"));
	writeDump(now().dateTimeFormat("ISO8601"));
```




## Related System Properties / Environment Variables

- [LUCEE_DATETIMEFORMAT_MODE](../environment-variables-system-properties.md#lucee_datetimeformat_mode) - Controls how datetimeFormat() interprets pattern masks such as WW and FF. `classic`: Emulates legacy formatting behavior (like Lucee 5), applying zero-padding and pattern length rules. `modern` (default): Uses Lucee 6+ behavior with precise pattern interpretation, aligned with Java's DateTimeFormatter for consistency and clarity. Use `classic` to maintain compatibility with legacy codebases that depend on padded output from formatting masks
  ***Type:** string, **Default:** modern, **Introduced:** 6.2.2.53*



# Categories

[Date and time](../../categories/datetime.md), [Strings](../../categories/string.md), [Formatting](../../categories/formatting.md)

# See Also

[Date and Time Formatting in Lucee](../../recipes/date-time-formatting.md), [GetHttpTimeString()](gethttptimestring.md), [LSDateTimeFormat()](lsdatetimeformat.md), [datetime.dateTimeFormat()](../objects/datetime/datetimeformat.md)