xref: /haiku/headers/os/locale/DateTimeFormat.h (revision 4a3a4742241f0843867e76cbc49694b9e4146b2f)
138ac8defSOliver Tappe /*
22a5e33a9SAdrien Destugues  * Copyright 2010-2014, Haiku, Inc.
338ac8defSOliver Tappe  * Distributed under the terms of the MIT Licence.
438ac8defSOliver Tappe  */
538ac8defSOliver Tappe #ifndef _B_DATE_TIME_FORMAT_H_
638ac8defSOliver Tappe #define _B_DATE_TIME_FORMAT_H_
738ac8defSOliver Tappe 
82a5e33a9SAdrien Destugues 
938ac8defSOliver Tappe #include <Format.h>
1038ac8defSOliver Tappe #include <FormatParameters.h>
1138ac8defSOliver Tappe 
1238ac8defSOliver Tappe 
1338ac8defSOliver Tappe class BString;
14*4a3a4742SAdrien Destugues class BTimeZone;
15*4a3a4742SAdrien Destugues 
16*4a3a4742SAdrien Destugues 
17*4a3a4742SAdrien Destugues enum BDateElement {
18*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_INVALID = 0,
19*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_YEAR = 1 << 0,
20*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_MONTH = 1 << 1,
21*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_WEEKDAY = 1 << 2,
22*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_DAY = 1 << 3,
23*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_AM_PM = 1 << 4,
24*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_HOUR = 1 << 5,
25*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_MINUTE = 1 << 6,
26*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_SECOND = 1 << 7,
27*4a3a4742SAdrien Destugues 	B_DATE_ELEMENT_TIMEZONE = 1 << 8
28*4a3a4742SAdrien Destugues };
29*4a3a4742SAdrien Destugues 
3038ac8defSOliver Tappe 
312a5e33a9SAdrien Destugues 
3238ac8defSOliver Tappe class BDateTimeFormat : public BFormat {
3338ac8defSOliver Tappe public:
34*4a3a4742SAdrien Destugues 								BDateTimeFormat(
35*4a3a4742SAdrien Destugues 									const BLanguage* const language = NULL,
36*4a3a4742SAdrien Destugues 									const BFormattingConventions* const format
37*4a3a4742SAdrien Destugues 										= NULL);
3838ac8defSOliver Tappe 								BDateTimeFormat(const BDateTimeFormat &other);
3938ac8defSOliver Tappe 	virtual						~BDateTimeFormat();
4038ac8defSOliver Tappe 
41*4a3a4742SAdrien Destugues 			void				SetDateTimeFormat(BDateFormatStyle dateStyle,
42*4a3a4742SAdrien Destugues 									BTimeFormatStyle timeStyle,
43*4a3a4742SAdrien Destugues 									int32 elements);
44*4a3a4742SAdrien Destugues 
4538ac8defSOliver Tappe 								// formatting
4638ac8defSOliver Tappe 
47e3857211SAdrien Destugues 			ssize_t				Format(char* target, const size_t maxSize,
48e3857211SAdrien Destugues 									const time_t time,
49e3857211SAdrien Destugues 									BDateFormatStyle dateStyle,
50e3857211SAdrien Destugues 									BTimeFormatStyle timeStyle) const;
51e3857211SAdrien Destugues 			status_t			Format(BString& buffer, const time_t time,
52e3857211SAdrien Destugues 									BDateFormatStyle dateStyle,
53e3857211SAdrien Destugues 									BTimeFormatStyle timeStyle,
54e3857211SAdrien Destugues 									const BTimeZone* timeZone = NULL) const;
5538ac8defSOliver Tappe 
56e3857211SAdrien Destugues private:
57*4a3a4742SAdrien Destugues 			icu::DateFormat*	_CreateDateTimeFormatter(
58e3857211SAdrien Destugues 									const BString& format) const;
5938ac8defSOliver Tappe };
6038ac8defSOliver Tappe 
6138ac8defSOliver Tappe 
6238ac8defSOliver Tappe #endif	// _B_DATE_TIME_FORMAT_H_
63