1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef OHOS_GLOBAL_I18N_SIMPLE_DATE_TIME_FORMAT_H 16 #define OHOS_GLOBAL_I18N_SIMPLE_DATE_TIME_FORMAT_H 17 18 #include <vector> 19 #include "i18n_types.h" 20 #include "locale_info.h" 21 #include "unicode/locid.h" 22 #include "unicode/smpdtfmt.h" 23 24 namespace OHOS { 25 namespace Global { 26 namespace I18n { 27 class SimpleDateTimeFormat { 28 public: 29 SimpleDateTimeFormat(const std::string& skeletonOrPattern, std::shared_ptr<LocaleInfo> localeInfo, 30 bool isBestPattern, I18nErrorCode& errCode); 31 SimpleDateTimeFormat(const std::string& skeletonOrPattern, const std::string& localeTag, 32 bool isBestPattern, I18nErrorCode& errCode); 33 std::string Format(int64_t milliseconds); 34 35 private: 36 void InitSimpleDateTimeFormat(const std::string& skeletonOrPattern, const std::string& locale, bool isBestPattern, 37 I18nErrorCode& errCode); 38 I18nErrorCode ParsePattern(const std::string& pattern); 39 I18nErrorCode ParseSkeleton(const std::string& skeleton, const icu::Locale& locale); 40 I18nErrorCode InitFormatters(const icu::Locale& locale, bool isBestPattern); 41 static bool IsValidPattern(const std::string& pattern); 42 static bool Init(); 43 static bool icuInitialized; 44 bool initSuccess = false; 45 std::vector<std::shared_ptr<icu::SimpleDateFormat>> formatters; 46 std::vector<std::string> patterns; 47 std::vector<bool> isPatterns; 48 static const char SEPARATOR; 49 static const std::string VALID_PATTERN; 50 }; 51 } // namespace I18n 52 } // namespace Global 53 } // namespace OHOS 54 #endif