Проект JodaTime_ohos
Основан на открытом проекте JodaTime и представляет собой его адаптацию для операционной системы Hongmeng. За версией исходного проекта Android можно следить по тегам и адресу GitHub (https://github.com/dlew/joda-time-android).
Язык программирования: Java. Внешние библиотеки: org.jar.
В Java обработка даты и времени — распространённая задача. Стандартные инструменты — это знакомые Date и Calendar, но их API не всегда удобны и мощны. Поэтому появилась специализированная библиотека Joda-Time.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
}
После установки проект можно запустить в среде SDK5 и DevEco Studio 2.1 beta3. Если возникли проблемы с запуском, удалите файлы .gradle, .idea, build, gradle, build.gradle и создайте новый проект, скопировав соответствующие файлы из нового проекта в корневой каталог.
Основные классы для работы с датами и временем: — Instant — неизменяемый класс для обозначения момента на временной шкале (временная метка); — DateTime — неизменяемый класс, который заменяет Calendar; — LocalDate — неизменяемый класс для представления локальной даты без информации о часовом поясе; — LocalTime — неизменяемый класс для представления локального времени без информации о дате; — LocalDateTime — неизменяемый класс для представления местного времени и даты без информации о часовом поясе.
Пример использования: Создание начального образца.
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);
}
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);
}
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);
}
JodaTime_ohos лицензирован в соответствии с Apache License, version 2.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )