3 Star 7 Fork 2

ISRC_OHOS / JodaTime_ohos

加入 Gitee
与超过 1000 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

JodaTime_ohos

本项目是基于开源项目 JodaTime 进行鸿蒙化的移植和开发的,可以通过项目标签以及github地址( https://github.com/dlew/joda-time-android )追踪到原安卓项目版本

项目介绍

  • 项目名称:日期和时间处理库
  • 所属系列:鸿蒙的第三方组件适配移植
  • 功能:处理日期和时间
  • 项目移植状态:完成
  • 调用差异:无
  • 开发版本:sdk5,DevEco Studio2.1 beta3
  • 项目发起作者:陈丛笑
  • 邮箱:isrc_hm@iscas.ac.cn
  • 原项目Doc地址:https://github.com/dlew/joda-time-android

项目介绍

  • 编程语言:Java
  • 外部库依赖:org.jar 在Java中处理日期和时间是很常见的需求,基础的工具类就是我们熟悉的Date和Calendar,然而这些工具类的api使用并不是很方便和强大,于是就诞生了Joda-Time这个专门处理日期时间的库。

安装教程

  1. 下载JodaTime的jar包JodaTime.jar。

  2. 启动 DevEco Studio,将下载的jar包,导入工程目录“entry->libs”下。

  3. 在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下jar包的引用。

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
	……
}
  1. 在导入的jar包上点击右键,选择“Add as Library”对包进行引用,选择需要引用的模块,并点击“OK”即引用成功。

在sdk5,DevEco Studio2.1 beta3下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下

使用说明

  1. 使用最多的五个日期时间类:
  • Instant - 不可变的类,用来表示时间轴上一个瞬时的点(时间戳)
  • DateTime - 不可变的类,用来替换JDK的Calendar类
  • LocalDate - 不可变的类,表示一个本地的日期,而不包含时间部分(没有时区信息)
  • LocalTime - 不可变的类,表示一个本地的时间,而不包含日期部分(没有时区信息)
  • LocalDateTime - 不可变的类,表示一个本地的日期-时间(没有时区信息)

2.使用实例 初始sample的构建

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);
    }

3:标准时间类的使用

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);
}

4:格式化时间类的使用

private void sampleFormatDateTime() {
        List<String> text = 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, FORMAT_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);
    }

5:格式化一段时间的表示使用

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);
}

6:相对时间的表示

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);
}

7:显示一段时间的相对表示

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);
}

8:显示一段时间的相对的字符串表示

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);
}

9:测试是否是今天

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);
}

10:当前时间的表示

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

版权和许可信息

简介

鸿蒙日期和时间处理库 展开 收起
Java
Apache-2.0
取消

发行版 (1)

全部

JodaTime_ohos

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/isrc_ohos/joda-time_ohos.git
git@gitee.com:isrc_ohos/joda-time_ohos.git
isrc_ohos
joda-time_ohos
JodaTime_ohos
master

搜索帮助

10d9f8b4 4838521 8bde8327 4838521