欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Joda-Time 操作常用时间函数

程序员文章站 2024-01-22 07:58:58
...

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

    }
}