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