# Java 常用方法 ## time ### Iso8601 to ZonedDateTime ```java= java.time.ZonedDateTime.parse("2015-08-18T00:00+01:00"); ``` ### get UTC+0 now Date ```java= Date.from(java.time.ZonedDateTime.now(ZoneId.of("UTC+0")).toInstant()); ``` ### 兩個時間相隔多久 ```java= private double subtract(String k1,String k2) { var k1t = ZonedDateTime.parse(k1); var k2t = ZonedDateTime.parse(k2); return ChronoUnit.MILLIS.between(k1t,k2t) / 1000; } ``` ### before ```java= ZonedDateTime st = ZonedDateTime.parse("2015-08-18T00:00+01:00"); ZonedDateTime ed = ZonedDateTime.parse("2019-08-18T00:00+01:00"); System.out.println(ed.isBefore(st)); System.out.println(ed.isAfter(st)); System.out.println(st.isBefore(ed)); System.out.println(st.isAfter(ed)); ``` ans : ```shell= false true true false ``` ## List / Array ### reverse 排序顛倒 ```java= public static void reverse(List<?> list){ ... } // Collections.reverse(arrlst); ``` ### Array to List ```java= Integer[] spam = new Integer[] { 1, 2, 3 }; List<Integer> list = Arrays.asList(spam); ``` ### Collection to Array ```java= // Where x is the collection: Foo[] foos = x.toArray(new Foo[x.size()]); ``` ## stream ### sum numbers ```java= List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5); Integer sum = integers.stream() .reduce(0, (a, b) -> a + b); ``` ### collect 指定 型別 ```java List<String> fields=Arrays.asList("foo", "bar", "baz", "foo"); CopyOnWriteArrayList<String> l = fields.stream() .distinct() .collect(Collectors.toCollection(CopyOnWriteArrayList::new)); ``` ## JSON ### dto 忽略 field ```java= public class MyDto { private String stringValue; @JsonIgnore private int intValue; } ``` ## String ### placehoder #### MessageFormat.format ```java= String streamName = MessageFormat.format("{0}@kline_{1}", symbol, interval); ``` ###### tags: `java`