blob: ed05b39a9edb073e814f40074325d6d0c2d1ba63 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_281) on Sun Jan 15 15:58:34 CET 2023 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TemplateDateFormat (FreeMarker 2.3.32 API)</title>
<meta name="date" content="2023-01-15">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="TemplateDateFormat (FreeMarker 2.3.32 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TemplateDateFormat.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../freemarker/core/TemplateConfiguration.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../freemarker/core/TemplateDateFormatFactory.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?freemarker/core/TemplateDateFormat.html" target="_top">Frames</a></li>
<li><a href="TemplateDateFormat.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">freemarker.core</div>
<h2 title="Class TemplateDateFormat" class="title">Class TemplateDateFormat</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../freemarker/core/TemplateValueFormat.html" title="class in freemarker.core">freemarker.core.TemplateValueFormat</a></li>
<li>
<ul class="inheritance">
<li>freemarker.core.TemplateDateFormat</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">TemplateDateFormat</span>
extends <a href="../../freemarker/core/TemplateValueFormat.html" title="class in freemarker.core">TemplateValueFormat</a></pre>
<div class="block">Represents a date/time/dateTime format; used in templates for formatting and parsing with that format. This is
similar to Java's <code>DateFormat</code>, but made to fit the requirements of FreeMarker. Also, it makes easier to define
formats that can't be represented with Java's existing <code>DateFormat</code> implementations.
<p>
Implementations need not be thread-safe if the <a href="../../freemarker/core/TemplateNumberFormatFactory.html" title="class in freemarker.core"><code>TemplateNumberFormatFactory</code></a> doesn't recycle them among
different <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>-s. As far as FreeMarker's concerned, instances are bound to a single
<a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>, and <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>-s are thread-local objects.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../freemarker/core/TemplateDateFormat.html#TemplateDateFormat--">TemplateDateFormat</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/TemplateDateFormat.html#format-freemarker.template.TemplateDateModel-">format</a></span>(<a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template">TemplateDateModel</a>&nbsp;dateModel)</code>
<div class="block">Formats the model to markup instead of to plain text if the result markup will be more than just plain text
escaped, otherwise falls back to formatting to plain text.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>abstract java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/TemplateDateFormat.html#formatToPlainText-freemarker.template.TemplateDateModel-">formatToPlainText</a></span>(<a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template">TemplateDateModel</a>&nbsp;dateModel)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/TemplateDateFormat.html#isLocaleBound--">isLocaleBound</a></span>()</code>
<div class="block">Tells if this formatter should be re-created if the locale changes.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/TemplateDateFormat.html#isTimeZoneBound--">isTimeZoneBound</a></span>()</code>
<div class="block">Tells if this formatter should be re-created if the time zone changes.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/TemplateDateFormat.html#parse-java.lang.String-int-">parse</a></span>(java.lang.String&nbsp;s,
int&nbsp;dateType)</code>
<div class="block">Parsers a string to date/time/datetime, according to this format.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.freemarker.core.TemplateValueFormat">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/TemplateValueFormat.html" title="class in freemarker.core">TemplateValueFormat</a></h3>
<code><a href="../../freemarker/core/TemplateValueFormat.html#getDescription--">getDescription</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="TemplateDateFormat--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>TemplateDateFormat</h4>
<pre>public&nbsp;TemplateDateFormat()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="formatToPlainText-freemarker.template.TemplateDateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>formatToPlainText</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;formatToPlainText(<a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template">TemplateDateModel</a>&nbsp;dateModel)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a>,
<a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dateModel</code> - The date/time/dateTime to format; not <code>null</code>. Most implementations will just work with the return value of
<a href="../../freemarker/template/TemplateDateModel.html#getAsDate--"><code>TemplateDateModel.getAsDate()</code></a>, but some may format differently depending on the properties of
a custom <a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template"><code>TemplateDateModel</code></a> implementation.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The date/time/dateTime as text, with no escaping (like no HTML escaping); can't be <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code> - When a problem occurs during the formatting of the value. Notable subclass:
<a href="../../freemarker/core/UnknownDateTypeFormattingUnsupportedException.html" title="class in freemarker.core"><code>UnknownDateTypeFormattingUnsupportedException</code></a></dd>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code> - Exception thrown by the <code>dateModel</code> object when calling its methods.</dd>
</dl>
</li>
</ul>
<a name="format-freemarker.template.TemplateDateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>format</h4>
<pre>public&nbsp;java.lang.Object&nbsp;format(<a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template">TemplateDateModel</a>&nbsp;dateModel)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a>,
<a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">Formats the model to markup instead of to plain text if the result markup will be more than just plain text
escaped, otherwise falls back to formatting to plain text. If the markup result would be just the result of
<a href="../../freemarker/core/TemplateDateFormat.html#formatToPlainText-freemarker.template.TemplateDateModel-"><code>formatToPlainText(TemplateDateModel)</code></a> escaped, it must return the <code>String</code> that
<a href="../../freemarker/core/TemplateDateFormat.html#formatToPlainText-freemarker.template.TemplateDateModel-"><code>formatToPlainText(TemplateDateModel)</code></a> does.
<p>The implementation in <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a> simply calls <a href="../../freemarker/core/TemplateDateFormat.html#formatToPlainText-freemarker.template.TemplateDateModel-"><code>formatToPlainText(TemplateDateModel)</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A <code>String</code> or a <a href="../../freemarker/core/TemplateMarkupOutputModel.html" title="interface in freemarker.core"><code>TemplateMarkupOutputModel</code></a>; not <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="parse-java.lang.String-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parse</h4>
<pre>public abstract&nbsp;java.lang.Object&nbsp;parse(java.lang.String&nbsp;s,
int&nbsp;dateType)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Parsers a string to date/time/datetime, according to this format. Some format implementations may throw
<a href="../../freemarker/core/ParsingNotSupportedException.html" title="class in freemarker.core"><code>ParsingNotSupportedException</code></a> here.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - The string to parse</dd>
<dd><code>dateType</code> - The expected date type of the result. Not all <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a>-s will care about this;
though those who return a <a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template"><code>TemplateDateModel</code></a> instead of <code>Date</code> often will. When strings
are parsed via <code>?date</code>, <code>?time</code>, or <code>?datetime</code>, then this parameter is
<a href="../../freemarker/template/TemplateDateModel.html#DATE"><code>TemplateDateModel.DATE</code></a>, <a href="../../freemarker/template/TemplateDateModel.html#TIME"><code>TemplateDateModel.TIME</code></a>, or <a href="../../freemarker/template/TemplateDateModel.html#DATETIME"><code>TemplateDateModel.DATETIME</code></a>,
respectively. This parameter rarely if ever <a href="../../freemarker/template/TemplateDateModel.html#UNKNOWN"><code>TemplateDateModel.UNKNOWN</code></a>, but the implementation
that cares about this parameter should be prepared for that. If nothing else, it should throw
<a href="../../freemarker/core/UnknownDateTypeParsingUnsupportedException.html" title="class in freemarker.core"><code>UnknownDateTypeParsingUnsupportedException</code></a> then.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The interpretation of the text either as a <code>Date</code> or <a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template"><code>TemplateDateModel</code></a>. Typically, a
<code>Date</code>. <a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template"><code>TemplateDateModel</code></a> is used if you have to attach some application-specific
meta-information thats also extracted during <a href="../../freemarker/core/TemplateDateFormat.html#formatToPlainText-freemarker.template.TemplateDateModel-"><code>formatToPlainText(TemplateDateModel)</code></a> (so if you format
something and then parse it, you get back an equivalent result). It can't be <code>null</code>. Known issue
(at least in FTL 2): <code>?date</code>/<code>?time</code>/<code>?datetime</code>, when not invoked as a method, can't
return the <a href="../../freemarker/template/TemplateDateModel.html" title="interface in freemarker.template"><code>TemplateDateModel</code></a>, only the <code>Date</code> from inside it, hence the additional
application-specific meta-info will be lost.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
</dl>
</li>
</ul>
<a name="isLocaleBound--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLocaleBound</h4>
<pre>public abstract&nbsp;boolean&nbsp;isLocaleBound()</pre>
<div class="block">Tells if this formatter should be re-created if the locale changes.</div>
</li>
</ul>
<a name="isTimeZoneBound--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isTimeZoneBound</h4>
<pre>public abstract&nbsp;boolean&nbsp;isTimeZoneBound()</pre>
<div class="block">Tells if this formatter should be re-created if the time zone changes. Currently always <code>true</code>.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TemplateDateFormat.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../freemarker/core/TemplateConfiguration.html" title="class in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../freemarker/core/TemplateDateFormatFactory.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?freemarker/core/TemplateDateFormat.html" target="_top">Frames</a></li>
<li><a href="TemplateDateFormat.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>