1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/isrc_ohos-joda-time_ohos

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Проект JodaTime_ohos

Проект

Основан на открытом проекте JodaTime и представляет собой его адаптацию для операционной системы Hongmeng. За версией исходного проекта Android можно следить по тегам и адресу GitHub (https://github.com/dlew/joda-time-android).

Описание проекта

  • Название: библиотека для работы с датой и временем.
  • Серия: адаптация сторонних компонентов для Hongmeng OS.
  • Функции: обработка даты и времени.
  • Состояние адаптации: завершено.
  • Различия в вызовах: отсутствуют.
  • Версия разработки: SDK5, DevEco Studio2.1 beta3.
  • Автор проекта: Чэнь Куньсяо.
  • Электронная почта: isrc_hm@iscas.ac.cn.
  • Адрес исходной документации проекта: https://github.com/dlew/joda-time-android.

Программирование

Язык программирования: Java. Внешние библиотеки: org.jar.

В Java обработка даты и времени — распространённая задача. Стандартные инструменты — это знакомые Date и Calendar, но их API не всегда удобны и мощны. Поэтому появилась специализированная библиотека Joda-Time.

Инструкция по установке

  1. Скачайте JodaTime.jar.
  2. В DevEco Studio импортируйте скачанный jar-файл в каталог «entry->libs».
  3. В файле build.gradle на уровне модуля добавьте зависимость, указав ссылку на jar-файлы в каталоге libs.
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    ……
}
  1. Щёлкните правой кнопкой мыши по импортированному jar-файлу, выберите «Add as Library», укажите модули, которые нужно связать, и нажмите «OK».

После установки проект можно запустить в среде SDK5 и DevEco Studio 2.1 beta3. Если возникли проблемы с запуском, удалите файлы .gradle, .idea, build, gradle, build.gradle и создайте новый проект, скопировав соответствующие файлы из нового проекта в корневой каталог.

Использование

  1. Основные классы для работы с датами и временем: — Instant — неизменяемый класс для обозначения момента на временной шкале (временная метка); — DateTime — неизменяемый класс, который заменяет Calendar; — LocalDate — неизменяемый класс для представления локальной даты без информации о часовом поясе; — LocalTime — неизменяемый класс для представления локального времени без информации о дате; — LocalDateTime — неизменяемый класс для представления местного времени и даты без информации о часовом поясе.

  2. Пример использования: Создание начального образца.

public class sampleDateRangeslice extends AbilitySlice {
    private DirectionalLayout directionalLayout = new DirectionalLayout(this);//初始化layout
    private DirectionalLayout.LayoutConfig layoutConfigD = new DirectionalLayout.LayoutConfig(ComponentContainer.LayoutConfig.MATCH_CONTENT,
            ComponentContainer.LayoutConfig.MATCH_CONTENT);//设置layout参数
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        directionalLayout.setWidth(ComponentContainer.LayoutConfig.MATCH_PARENT);
        directionalLayout.setHeight(ComponentContainer.LayoutConfig.MATCH_PARENT);
        directionalLayout.setPadding(32, 32, 80, 80);//设置间距

        ShapeElement element = new ShapeElement();//初始化button背景


        element.setRgbColor(new RgbColor(255, 255, 255));
        directionalLayout.setBackground(element);

        Text welcome = new Text(this);//初始化欢迎标题

        welcome.setLayoutConfig(layoutConfigD);
        welcome.setText("sampleDateRange测试结果:");
        welcome.setTextSize(85);
        welcome.setTextColor(Color.RED);
        welcome.setMultipleLine(true);
        directionalLayout.addComponent(welcome);
        sampleDateRange();
        super.setUIContent(directionalLayout);//应用layout
    }

    private void addSample(CharSequence title, Iterable<String> text) {//定义测试sample
        addSample(title, join("\n",text));
    }
    public static String join( CharSequence delimiter,  Iterable tokens) {//定义字符串的链接
        final Iterator<?> it = tokens.iterator();
        if (!it.hasNext()) {
            return "";
        }
        final StringBuilder sb = new StringBuilder();
        sb.append(it.next());
        while (it.hasNext()) {
            sb.append(delimiter);
            sb.append(it.next());
        }
        return sb.toString();
    }

    private void addSample(CharSequence title, CharSequence text) {//定义测试sample主体


        Text titleText = new Text(this);
        titleText.setLayoutConfig(layoutConfigD);
        titleText.setText((String) title);
        titleText.setTextColor(Color.BLUE);
        titleText.setTextSize(75);
        titleText.setMultipleLine(true);
        Text textT = new Text(this);
        textT.setLayoutConfig(layoutConfigD);
        textT.setText((String) text);
        textT.setTextSize(70);
        textT.setMultipleLine(true);
        directionalLayout.addComponent(titleText);
        directionalLayout.addComponent(textT);
    }
  1. Использование стандартных классов дат и времени:
private void sampleDateTime() {
    List<String> text = new ArrayList<String>();
    DateTime now = DateTime.now();
    text.add("Now: " + now);
    text.add("Now + 30 minutes: " + now.plusMinutes(30));
    text.add("Now + 5 hours: " + now.plusHours(5));
    text.add("Now + 2 days: " + now.plusDays(2)+"\n\n");
    addSample("DateTime", text);
}
  1. Использование форматированных классов дат и времени:
private void sampleFormatDateTime() {
        List<String> text =
``` Данный фрагмент текста написан на языке Java.

1. Форматирование времени:  

    * new ArrayList<String>();  
    * DateTime now = DateTime.now();  
    * text.add("Show time: " + DateUtils.formatDateTime(this, now, FORMAT_SHOW_TIME));  
    * text.add("Show date: " + DateUtils.formatDateTime(this, now, FORМАТ_SHOW_DATE));  
    * text.add("Numeric date: " + DateUtils.formatDateTime(this, now, FORMAT_NUMERIC_DATE));  
    * text.add("Show date (abbreviated): " + DateUtils.formatDateTime(this, now, FORMAT_ABBREV_ALL));  
    * addSample("DateUtils.formatDateTime()", text);  

Этот фрагмент кода создаёт новый список строк и добавляет в него время и дату, отформатированные с помощью метода formatDateTime класса DateUtils.

2. Форматирование длительности:  

   * private void sampleFormatDuration() throws IOException, NotExistException, WrongTypeException {  
   * List<String> text = new ArrayList<String>();  
   * text.add("Seconds: " + DateUtils.formatDuration(this, Duration.standardSeconds(25)));  
   * text.add("Minutes: " + DateUtils.formatDuration(this, Duration.standardMinutes(5)));  
   * text.add("Hours: " + DateUtils.formatDuration(this, Duration.standardHours(3)));  
   * addSample("DateUtils.formatDuration()", text);  

В этом фрагменте кода также создаётся список строк, но в него добавляются значения, полученные с помощью метода formatDuration класса DateUtils и представляющие собой форматированную длительность.

3. Относительное время:  

   * private void sampleGetRelativeDateTimeString() throws NotExistException, WrongTypeException, IOException {  
   * List<String> text = new ArrayList<String>();  
   * DateTime now = DateTime.now();  
   * text.add("Short future: " + DateUtils.getRelativeDateTimeString(this, now.plusMinutes(25), null, 0));  
   * text.add("Medium future: " + DateUtils.getRelativeDateTimeString(this, now.plusHours(5), null, 0));  
   * text.add("Long future: " + DateUtils.getRelativeDateTimeString(this, now.plusDays(3), null, 0));  
   * text.add("Short past: " + DateUtils.getRelativeDateTimeString(this, now.minusMinutes(25), null, 0));  
   * text.add("Medium past: " + DateUtils.getRelativeDateTimeString(this, now.minusHours(5), null, 0));  
   * text.add("Long past: " + DateUtils.getRelativeDateTimeString(this, now.minusDays(3), null, 0));  
   * addSample("DateUtils.getRelativeDateTimeString()", text);  

Здесь создаётся список строк с относительным временем, полученным с помощью метода getRelativeDateTimeString класса DateUtils.

4. Относительная длительность:  

   * private void sampleGetRelativeTimeSpanString() throws NotExistException, WrongTypeException, IOException {  
   * List<String> text = new ArrayList<String>();  
   * DateTime now = DateTime.now();  
   * text.add("Short future: " + DateUtils.getRelativeTimeSpanString(this, now.plusMinutes(25)));  
   * text.add("Medium future: " + DateUtils.getRelativeTimeSpanString(this, now.plusHours(5)));  
   * text.add("Long future: " + DateUtils.getRelativeTimeSpanString(this, now.plusDays(3)));  
   * text.add("Short past: " + DateUtils.getRelativeTimeSpanString(this, now.minusMinutes(25)));  
   * text.add("Medium past: " + DateUtils.getRelativeTimeSpanString(this, now.minusHours(5)));  
   * text.add("Long past: " + DateUtils.getRelativeTimeSpanString(this, now.minusDays(3)));  
   * addSample("DateUtils.getRelativeTimeSpanString()", text);  

Аналогично предыдущему примеру, здесь создаётся список строк с относительной длительностью, полученной с помощью метода getRelativeTimeSpanString класса DateUtils.

5. Относительная длительность с предлогом:  

   * private void sampleGetRelativeTimeSpanStringWithPreposition() throws NotExistException, WrongTypeException, IOException {  
   * List<String> text = new ArrayList<String>();  
   * DateTime now = DateTime.now();  
   * text.add("Short future: " + DateUtils.getRelativeTimeSpanString(this, now.plusMinutes(25), true));  
   * text.add("Medium future: " + DateUtils.getRelativeTimeSpanString(this, now.plusHours(5), true));  
   * text.add("Long future: " + DateUtils.getRelativeTimeSpanString(this, now.plusDays(3), true));  
   * text.add("Short past: " + DateUtils.getRelativeTimeSpanString(this, now.minusMinutes(25), true));  
   * text.add("Medium past: " + DateUtils.getRelativeTimeSpanString(this, now.minusHours(5), true));  
   * text.add("Long past: " + DateUtils.getRelativeTimeSpanString(this, now.minusDays(3), true));  
   * addSample("DateUtils.getRelativeTimeSpanString() (with preposition)", text);  

Также создаётся список строк с относительной длительностью с использованием предлога, полученного с помощью метода getRelativeTimeSpanString с дополнительным параметром true.

6. Проверка на сегодня:  

   * private void sampleIsToday() {  
   * List<String> text = new ArrayList<String>();  
   * LocalDate today = LocalDate.now();  
   * text.add("Today: " + DateUtils.isToday(today));  
   * text.add("Tomorrow: " + DateUtils.isToday(today.plusDays(1)));  
   * text.add("Yesterday: " + DateUtils.isToday(today.minusDays(1)));  
   * addSample("DateUtils.isToday()", text);  

Создаётся список строк для проверки, является ли дата сегодняшней, завтрашней или вчерашней.

7. Текущая дата:  

   * private void sampleLocalDate() {  
   * List<String> text = new  

Код не завершён. ```
ArrayList<String>();
LocalDate now = LocalDate.now();
text.add("Now: " + now);
text.add("Now + 2 days: " + now.plusDays(2));
text.add("Now + 3 months: " + now.plusMonths(3));
addSample("LocalDate", text);
}

Версия итерации

  • v0.1.0-alpha

Информация об авторских правах и лицензиях

JodaTime_ohos лицензирован в соответствии с Apache License, version 2.0.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

**Библиотека Хонгмен для работы с датой и временем** [Текст на языке запроса] Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/isrc_ohos-joda-time_ohos.git
git@api.gitlife.ru:oschina-mirror/isrc_ohos-joda-time_ohos.git
oschina-mirror
isrc_ohos-joda-time_ohos
isrc_ohos-joda-time_ohos
master