Joda-Time 操作常用时间函数

比较时间大小

Joda-Time 操作常用时间函数

Joda-Time 简介(引用) / 例子Example(自己)/ 官网例子

Java日期计算之Joda-Time

JodaTime开源时间/日期库

测试

package test.java.com.kaishengit.service.impl;

import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.*;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;


/**
 * Created by Wgs on 2017/10/11.
 */
public class MapTest {
    @Test
    public void test() {
        String authCode = "21234654332243";
        String[] strings = new String[]{"25", "26", "27"};
        if (StringUtils.startsWithAny(authCode, strings) && authCode.length() >= 16) {
            System.out.println("success");
        }
        System.out.println(authCode.length());
    }

    @Test
    public void time() {
        System.out.println(DateTime.now().toString("yyyy-MM-dd"));
        System.out.println(new Date());
        // 获取当前周的周一和周末
        System.out.println(String.format("min:%s, max:%s", DateTime.now().dayOfWeek().withMinimumValue().toString("yyyy-MM-dd"),
                DateTime.now().dayOfWeek().withMaximumValue().toString("yyyy-MM-dd")));
    }

    @Test
    public void week() {
        //DateTime now = new DateTime("2017-03-15");
        DateTime now = DateTime.now();
        String start = now.dayOfWeek().withMinimumValue().toString("yyyy-MM-dd");
        String end = now.dayOfWeek().withMaximumValue().toString("yyyy-MM-dd");
        System.out.println(end);
        System.out.println(start);
//星期
        int week = now.getDayOfWeek();
        System.out.println(week);

        String string_c = now.toString("MM", Locale.CHINESE);
        System.out.println(string_c);
        String moth = now.monthOfYear().getAsText(Locale.CHINESE);
        System.out.println(moth);
    }

    @Test
    public void moth() {
        DateTime now = DateTime.now();
        System.out.println(now.dayOfMonth().withMinimumValue().toString("yyyy-MM-dd"));
        System.out.println(now.dayOfMonth().withMaximumValue().toString("dd"));
    }

    @Test
    public void year() {
        DateTime now = DateTime.now();
        System.out.println(now.monthOfYear().withMinimumValue().toString("yyyy-MM"));
        System.out.println(now.monthOfYear().withMaximumValue().toString("yyyy-MM"));
    }

    @Test
    public void weeks() {
        //DateTime now = new DateTime("2017-03-15");
        DateTime now = DateTime.now();
        String start = now.dayOfWeek().withMinimumValue().toString("yyyy-MM-dd");
        String end = now.dayOfWeek().withMaximumValue().toString("yyyy-MM-dd");
        System.out.println(end);
        System.out.println(start);
//星期
        //   int week = now.getDayOfWeek();
        //  System.out.println(week);

        //  String string_c = now.toString("MM", Locale.CHINESE);
        //  System.out.println(string_c);
        // String moth = now .monthOfYear().getAsText(Locale.CHINESE);
        //  System.out.println(moth);
    }

    @Test
    public void weeknull() {
        String tiem = "11";
        if (StringUtils.isBlank(tiem)) {
            System.out.println("111");
        }

        // if (StringUtils)
        //DateTime now = new DateTime("2017-03-15");
        DateTime now = DateTime.now();
        String start = now.dayOfMonth().withMinimumValue().toString("yyyy-MM-dd");
        String end = now.dayOfMonth().withMaximumValue().toString("yyyy-MM-dd");
        System.out.println(end);
        System.out.println(start);
        System.out.println(now.toString("EE", Locale.CHINESE));

    }

    /**
     * guava List交集
     */
    @Test
    public void eq() {
        // x轴数据是固定的
        List<String> listOld = Lists.newArrayList("周一", "周二", "周三", "周四", "周五", "周六", "周日");
        // 把周二插到指定位置
        List<String> newList = Lists.newArrayList("周一", "周三", "周四", "周五", "周六", "周日");
        List<String> guava = getDifferenceSetByGuava(listOld, newList);
        for (String result : guava) {
            System.out.println(result);
        }

    }

    @Test
    public void eqs() {
        List<String> listOld = Lists.newArrayList("0:00", "3:00", "4:00", "5:00");
        List<String> newList = Lists.newArrayList("6:00", "3:00", "1:00");
        newList.removeAll(listOld);
        listOld.addAll(newList);

        Collections.sort(listOld);
        for (String result : listOld) {
            System.out.println(result);
        }
    }

    @Test
    public void b() {
        List list1 = new ArrayList();
        list1.add("1111");
        list1.add("2222");
        list1.add("3333");

        List list2 = new ArrayList();
        list2.add("3333");
        list2.add("4444");
        list2.add("5555");

        //并集
        //list1.addAll(list2);
        //交集
        //list1.retainAll(list2);
        //差集
        list1.removeAll(list2);
        //无重复并集
        list2.removeAll(list1);
        list1.addAll(list2);

        Iterator<String> it = list1.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());

        }

        //System.out.println("-----------------------------------\n");
        //printStr(list1);

    }

    public static void printStr(List list1) {
        for (int i = 0; i < list1.size(); i++) {
            System.out.println(list1.get(i));
        }

    }

    @Test
    public void c() {
        Multiset<String> multiSet = HashMultiset.create();
        multiSet.add("chen");
        multiSet.add("chen");
        multiSet.add("xing");
        for (String s : multiSet) {
            System.out.println(s);
        }

        Multimap<String, String> multiMap = HashMultimap.create();
        multiMap.put("chen", "11");
        multiMap.put("chen", "22");
        for (Map.Entry<String, String> entry : multiMap.entries()) {
            System.out.println("key:" + entry.getKey() + "  value:" + entry.getValue());
        }
    }

    @Test
    public void guavat() {
        ImmutableMap<String, Integer> oneMap = ImmutableMap.of("key1", 1, "key2", 2);
        ImmutableMap<String, Integer> twoMap = ImmutableMap.of("key11", 11, "key2", 2);
        MapDifference<String, Integer> diffHadle = Maps.difference(oneMap, twoMap);
        Map<String, Integer> commonMap = diffHadle.entriesInCommon();//{"key2",2},若无共同Entry,则返回长度为0的Map
        Map<String, Integer> diffOnLeft = diffHadle.entriesOnlyOnLeft();//返回左边的Map中不同或者特有的元素
        Map<String, Integer> diffOnRight = diffHadle.entriesOnlyOnRight();//返回右边的Map中不同或者特有的元素
        for (Map.Entry<String, Integer> entry : diffOnRight.entrySet()) {
            System.out.println("共同Map中key:" + entry.getKey() + "  value:" + entry.getValue());
        }
    }

    @Test
    public void gavaTe() {
        List<String> big = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7", "8", "9");
        List<String> small = Lists.newArrayList("1", "2", "3", "3", "2", "1");
        long a = System.currentTimeMillis();
        List<String> guava = getDifferenceSetByGuava(big, small);
        System.out.println("\r<br> 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");
        //为了显示一致,我给集合排个序,因为guava是按newHashSet集合来整的,newHashSet又是无序的,so ...
        Collections.sort(guava);
        a = System.currentTimeMillis();
        List<String> my = getDifferenceSetByMyself(big, small);
        System.out.println("\r<br> 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");
        System.out.println("guava:" + guava.toString());
        System.out.println(my.toString());

        Map<String, String> bigMap = Maps.newHashMap();
        bigMap.put("1", "1");
        bigMap.put("2", "2");
        bigMap.put("3", "3");
        bigMap.put("4", "4");
        Map<String, String> smallMap = Maps.newHashMap();
        smallMap.put("1", "1");
        smallMap.put("2", "9");
        smallMap.put("5", "5");
        a = System.currentTimeMillis();
        Map<String, String> guavaMap = getDifferenceSetByGuava(bigMap, smallMap);
        System.out.println("\r<br> 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");
        System.out.println(guavaMap);
    }

    /**
     * 使用guava工具类来取List集合的差集--专业轮子谷歌造
     *
     * @param big   大集合
     * @param small 小集合
     * @return 两个集合的差集
     */
    private static List<String> getDifferenceSetByGuava(List<String> big, List<String> small) {
        Set<String> differenceSet = Sets.difference(Sets.newHashSet(big), Sets.newHashSet(small));
        return Lists.newArrayList(differenceSet);
    }

    /**
     * 自己实现取List集合的差集--自制轮子大师兄造
     *
     * @param big   大集合
     * @param small 小集合
     * @return 两个集合的差集
     */
    private static List<String> getDifferenceSetByMyself(List<String> big, List<String> small) {
        Set<String> sameString = Sets.newHashSet();
        for (String s : small) {
            sameString.add(s);
        }
        List<String> result = Lists.newArrayList();
        for (String s : big) {
            if (sameString.add(s)) {
                result.add(s);
            }
        }
        return result;
    }

    /**
     * 自己实现取Map集合的差集--站在巨人的肩膀上造轮子
     *
     * @param bigMap   大集合
     * @param smallMap 小集合
     * @return 两个集合的差集
     */
    private static Map<String, String> getDifferenceSetByGuava(Map<String, String> bigMap, Map<String, String> smallMap) {
        Set<String> bigMapKey = bigMap.keySet();
        Set<String> smallMapKey = smallMap.keySet();
        Set<String> differenceSet = Sets.difference(bigMapKey, smallMapKey);
        Map<String, String> result = Maps.newHashMap();
        for (String key : differenceSet) {
            result.put(key, bigMap.get(key));
        }
        return result;

    }

    @Test
    public void testMap() {
        List<Person> persons = Lists.newArrayList(
                new Person("zhang", 15),
                new Person("wang", 15),
                new Person("lee", 18)
        );
        Map<String, Person> map = Maps.uniqueIndex(persons, new Function<Person, String>() {
            public String apply(Person person) {
                return person.getName();
            }
        });


        map = Maps.filterValues(map, new Predicate<Person>() {
            @Override
            public boolean apply(Person person) {
                return person != null && person.getAge() > 15;
            }
        });


        for (Map.Entry<String, Person> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }

    @Test
    public void convent() {
        Map map1 = Maps.newHashMap();
        map1.put("a", 1);
        map1.put("b", 2);
        map1.put("c", 3);
        map1.put("d", 4);
        Map<String, Integer> map2 = Maps.newHashMap();
        map2.put("a", 1);
        map2.put("b", 2);


        Map<String, Integer> result = Maps.filterKeys(map2, new Predicate<String>() {
            @Override
            public boolean apply(String s) {
                return s.equals("a");
            }
        });
        for (String st : result.keySet()) {
            System.out.println("key:" + st + "value:" + result.get(st));
        }

    }
    @Test
    public void tests(){
        List list = new ArrayList();
        Map map = new HashMap();

    }
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容