Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > W

wcsftime(3C)

HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

NAME

wcsftime() — convert date and time to wide-character string

SYNOPSIS

#include <wchar.h>

size_t wcsftime( wchar_t *__restrict ws, size_t maxsize, const char *__restrict format, const struct tm *__restrict timeptr ); Unix Standards Only size_t wcsftime( wchar_t *__restrict ws, size_t maxsize, const wchar_t *__restrict format, const struct tm *__restrict timeptr );

Remarks

This function is compliant with the XPG4 Worldwide Portability Interface wide-character formatting functions. It parallels the 8-bit character formatting function defined in strftime(3C).

DESCRIPTION

wcsftime() converts the contents of a tm structure (see ctime(3C)) to a formatted date and time wide-character string.

wcsftime() places wide characters into the array pointed to by ws as controlled by the string pointed to by format. The format string consists of zero or more directives and ordinary characters. A directive consists of a % character, an optional field width and precision specification, and a terminating character that determines the directive's behavior. All ordinary characters (including the terminating null character) are converted into corresponding wide characters and are copied into the array. No more than maxsize wide characters are placed into the array. Each directive is replaced by the appropriate wide characters as described in the following list. The appropriate wide characters are determined by the program's locale, by the values contained in the structure pointed to by timeptr, and by the TZ environment variable (see External Influences below).

The definition for this function and the type wchar_t are provided in the <wchar.h> header.

Unix Standards Only

wcsftime() places wide characters into the array pointed to by ws as controlled by the wide-character string pointed by format. The functionality of wcsftime() is the same except for data type of format.

Directives

The following directives, shown without the optional field width and precision specification, are replaced by the corresponding wide characters as indicated:

%a

Locale's abbreviated weekday name.

%A

Locale's full weekday name.

%b

Locale's abbreviated month name.

%B

Locale's full month name.

%c

Locale's appropriate date and time representation.

%C

The century number (the year divided by 100 and truncated to an integer) as a decimal number [00-99].

%d

Day of the month as a decimal number [01,31].

%D

Equivalent to the directive string %m/%d/%y.

%e

Day of the month as a decimal number [1,31]; a single digit is preceded by a space.

%h

Equivalent to %b.

%H

Hour (24-hour clock) as a decimal number [00,23].

%I

Hour (12-hour clock) as a decimal number [01,12].

%j

Day of the year as a decimal number [001,366].

%m

Month as a decimal number [01,12].

%M

Minute as a decimal number [00,59].

%n

The New-line character.

%p

Locale's equivalent of either AM or PM.

%r

The time in AM and PM notation; in the POSIX locale this is equivalent to %I:%M:%S%p.

%R

The time in 24 hour notation (%H:%M).

%S

Second as a decimal number [00,61].

%t

The Tab character.

%T

The time in hours, minutes, and seconds (%H:%M:%S).

%u

The weekday as a decimal number [1(Monday),7].

%U

Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0.

%V

The week number of the year (Monday as the first day of the week) as a decimal number [01,53]. If the week containing January 1st has four or more days in the new year, then it is considered week 1; otherwise, it is week 53 of the previous year, and the next week is week 1.

%w

Weekday as a decimal number [0(Sunday),6].

%W

Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.

%x

Locale's appropriate date representation.

%X

Locale's appropriate time representation.

%y

Year without century as a decimal number [00,99].

%Y

Year with century as a decimal number.

%Z

Time zone name (or by no characters if no time zone exists).

%%

The percent (%) character.

The following directives are provided for backward compatibility with the directives supported by date and the ctime functions. These directives may be removed in a future release. It is recommended that the directives above be used in preference to those below.

%E

Locale's combined Emperor/Era name and year (use %EC%Ey instead).

%F

Locale's full month name (use %B instead).

%N

Locale's Emperor/Era name (use %EC instead).

%o

Locale's Emperor/Era year (use %Ey instead).

%z

Time zone name (or by no characters if no time zone exists) (use %Z instead).

If a directive is not one of the above, the behavior is undefined.

Modified Conversion Specifiers

Some conversion specifiers can be modified by the E or O modifier characters to indicate that an alternative format or specification should be used rather than the one normally used by the unmodified conversion specifier. If the alternative format or specification does not exist for the current locale, the behavior will be as if the unmodified conversion specification were used. Alternative numeric symbols refers to those symbols defined by the ALT_DIGIT (see langinfo(5)) in the locale.

%Ec

The locales alternative appropriate date and time representation.

%EC

The name of the base year (period/Emperor/Era) in the locale's alternative representation.

%Ex

The locale's alternative date representation

%EX

The locale's alternative time representation.

%Ey

The offset from %EC (year only) in the locale's alternative representation.

%EY

The full alternative year representation.

%Od

The day of the month, using the locale's alternative numeric symbols, filled as needed with leading zeros if there is any alternative symbol for zero, otherwise with leading spaces.

%Oe

the day of the month, using the locale's alternative numeric symbols, filled as needed with leading spaces.

%OH

The hour (24-hour clock) using the locale's alternative numeric symbols.

%OI

The hour (12-hour clock) using the locale's alternative numeric symbols.

%Om

The month using the locale's alternative numeric symbols.

%OM

The minutes using the locale's alternative numeric symbols.

%OS

The seconds using the locale's alternative numeric symbols.

%Ou

The weekday as a number in the locale's alternative representation (Monday=1).

%OU

The week number of the year (Sunday as the first day of the week, rules corresponding to %U) using the locale's alternative numeric symbols.

%OV

The week number of the year (Monday as the first day of the week, rules corresponding to %V) using tht locale's alternative numeric symbols.

%Ow

The number of the weekday (Sunday=0) using the locale's alternative numeric symbols.

%OW

The week number of the year (Monday as the first day of the week) using the locale's alternative numeric symbols.

%Oy

The year (offset from %C) in the locale's alternative representation and using the locale's alternative symbols.

Field Width and Precision

An optional field width and precision specification can immediately follow the initial % of a directive in the following order:

[-|0]w

The decimal digit string w specifies a minimum field width in which the result of the conversion is right- or left-justified. It is right-justified (with space padding) by default. If the optional - character is specified, it is left-justified with space padding on the right. If the optional 0 character is specified, it is right-justified and padded with zeros on the left.

.p

The decimal digit string p specifies the minimum number of digits to appear for the d, H, I, j, m, M, o, S, U, w, W, y and Y directives, and the maximum number of corresponding wide characters to be used from the a, A, b, B, c, D, E, F, h, n, N, p, r, t, T, x, X, z, Z, and % directives. In the first case, if a directive supplies fewer digits than specified by the precision, it is expanded with leading zeros. In the second case, if a directive supplies more characters than specified by the precision, excess characters are truncated on the right.

If no field width or precision is specified for a d, H, I, m, M, S, U, W, y, or j directive, a default of .2 is used for all but j for which .3 is used.

APPLICATION USAGE

The "Unix Standards Only" prototype of wcsftime() is available to applications if they are:

a.

c99 conformant.

b.

Compiled with -D_XOPEN_SOURCE macro with a value >=500.

c.

Compiled with -D_POSIX_C_SOURCE macro with a value >= 200112.

Also the application must be compiled with the environment variable UNIX_STD set to the value 98 or above and exported.

EXTERNAL INFLUENCES

Environment Variables

The LC_TIME category determines the characters to be substituted for those directives described above as being from the locale.

The LC_CTYPE category determines the interpretation of the bytes within format as single and/or multi-byte characters as well as how wide-character conversions are done.

The LC_NUMERIC category determines the characters used to form numbers for those directives that produce numbers in the output. If ALT_DIGITS (see langinfo(5)) is defined for the locale, the characters so specified are used in place of the default ASCII characters. If both ALT_DIGITS and ALT_DIGIT is defined for the locale, ALT_DIGITS will take precedence over ALT_DIGIT.

Environment Variables

TZ determines the time zone name substituted for the %Z and %z directives. The time zone name is determined by calling the function tzset() which sets the external variable tzname (see ctime(3C)).

International Code Set Support

Single- and multi-byte character code sets are supported.

RETURN VALUE

If the total number of resulting wide characters including the terminating null wide character is not more than maxsize, wcsftime() returns the number of wide characters placed into the array pointed to by ws, not including the terminating null wide character. Otherwise, zero is returned and the contents of the array are indeterminate.

EXAMPLES

If the timeptr argument contains the following values:

timeptr->tm_sec = 4; timeptr->tm_min = 9; timeptr->tm_hour = 15; timeptr->tm_mday = 4; timeptr->tm_mon = 6; timeptr->tm_year = 88; timeptr->tm_wday = 1; timeptr->tm_yday = 185; timeptr->tm_isdst = 1;

the following combinations of the LC_TIME category and format strings produce the indicated output:

LC_TIMEFormat StringOutput
en_US.roman8%xMon, Jul 4, 1988
de_De.roman8%xMo., 4. Juli 1988
en_US.roman8%X03:09:04 PM
fr_FR.roman8%X15h09 04
any *%H:%M:%S15:09:04
any *%.1H:%.1M:%.1S15:9:4
any *%2.1H:%-3M:%03.1S15:9 :004

  • * The directives used in these examples are not affected by the LC_TIME category of the locale.

WARNINGS

The function tzset() is called upon every invocation of wcsftime() (whether or not the time zone name is copied to the output array).

The range of values for %S ([0,61]) extends to 61 to allow for the occasional one or two leap seconds. However, the system does not accumulate leap seconds and the tm structure generated by the functions localtime() and gmtime() (see ctime(3C)) never reflects any leap seconds.

Results are undefined if values contained in the structure pointed to by timeptr exceed the ranges defined for the tm structure (see ctime(3C)) or are not consistent (such as if the tm_yday element is set to 0, indicating the first day of January, while the tm_mon element is set to 11, indicating a day in December).

AUTHOR

wcsftime() was developed by OSF and HP.

STANDARDS CONFORMANCE

wcsftime(): XPG4

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.