in trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/DateFormat.js [219:431]
function _subformat(
inString,
localeSymbols,
locale,
formatType,
startIndex,
charCount,
time,
stringHolder
)
{
// string to append to the toString
var appendString = null;
var amPMAdjust = false;
if ((formatType >= 'A') && (formatType <= 'Z') ||
(formatType >= 'a') && (formatType <= 'z'))
{
switch (formatType)
{
case 'D': // day in year
{
var firstDayInYear = new Date(time.getFullYear(), 0, 1);
var millisSinceFirstDayInYear = time - firstDayInYear;
var daysSinceFirstDayInYear = Math.floor(millisSinceFirstDayInYear / _MILLIS_PER_DAY);
// The above calculation produces a zero-based value (eg. daysSinceFirstDateInYear for Jan 1 is 0), but
// the "day in year" value should be 1-based (eg. Jan 1 should be day 1), so we tack on 1 now.
appendString = (daysSinceFirstDayInYear + 1);
}
break;
case 'E': // day in week
{
var dayOfWeek = time.getDay();
appendString = (charCount <= 3)
? localeSymbols.getShortWeekdays()[dayOfWeek]
: localeSymbols.getWeekdays()[dayOfWeek];
}
break;
case 'F': // day of week in month
appendString = "(Day of week in month)";
break;
case 'G': // era designator
{
var eras = localeSymbols.getEras();
appendString = (time.getTime() < _getADEra().getTime())
? eras[0]
: eras[1];
}
break;
case 'M': // month in year
{
var monthIndex = time.getMonth();
if (charCount <= 2)
{
// use the month number
appendString = _getPaddedNumber(monthIndex + 1, charCount);
}
else if (charCount == 3)
{
// use the month abbreviation
appendString = localeSymbols.getShortMonths()[monthIndex];
}
else
{
// use the full month name
appendString = localeSymbols.getMonths()[monthIndex];
}
}
break;
case 'S': // millisecond (0 - 999)
appendString = _getPaddedNumber(time.getMilliseconds(), charCount);
break;
case 'W': // week in month
appendString = "(Week in Month)";
break;
case 'a': // am/pm marker
{
var amPMs = localeSymbols.getAmPmStrings();
appendString = (_isPM(time.getHours()))
? amPMs[1]
: amPMs[0];
}
break;
case 'd': // day in month
appendString = _getPaddedNumber(time.getDate(), charCount);
break;
case 'h': // hour in am/pm (1-12)
hours = time.getHours();
if (_isPM(hours))
hours -= 12;
if (hours == 0)
hours = 12;
appendString = _getPaddedNumber(hours, charCount);
break;
case 'K': // hour in am/pm (0-11)
hours = time.getHours();
if (_isPM(hours))
hours -= 12;
appendString = _getPaddedNumber(hours, charCount);
break;
case 'k': // hour in day (1-24)
hours = time.getHours();
if (hours == 0)
hours = 24;
appendString = _getPaddedNumber(hours, charCount);
break;
case 'H': // hour in day (0-23)
appendString = _getPaddedNumber(time.getHours(), charCount);
break;
case 'm': // minute in hour 0 - 59)
appendString = _getPaddedNumber(time.getMinutes(), charCount);
break;
case 's': // seconds in minute 0 - 59)
appendString = _getPaddedNumber(time.getSeconds(), charCount);
break;
case 'w': // week in year
appendString = "(Week in year)";
break;
case 'y': // year
{
var year = time.getFullYear();
// Trinidad-2013: Thai Buddhist Calendar is offset by 543 years
if (locale == "th_TH")
year += _THAI_BUDDHIST_YEAR_OFFSET;
// truncate 2 and 1 digit years to that number of digits
var maxDigits = (charCount <= 2)
? charCount
: null;
appendString = _getPaddedNumber(year, charCount, maxDigits);
}
break;
case 'z': // GMT timezone - "GMT Sign Hours : Minutes"
{
appendString = "GMT";
var tzString = _getTimeZoneOffsetString(time, false);
if (tzString)
{
// +/-HH:mm
appendString += tzString[0];
appendString += ":"
appendString += tzString[1];
}
}
break;
case 'Z': // RFC 822 timeZone - "Sign TwoDigitHours Minutes"
{
var tzString = _getTimeZoneOffsetString(time, true);
if (tzString)
{
// +/-HHmm
appendString = tzString[0];
appendString += tzString[1];
}
else
{
appendString = "";
}
}
break;
default:
// do nothing rather than throw an exception
appendString = "";
}
}
else
{
// all other results are literal
appendString = inString.substring(startIndex, startIndex + charCount);
}
stringHolder.value += appendString;
// formatting should never fail
return true;
}