java
Java 8에서는 이전 날짜-시간 API의 다음과 같은 단점을 보완하기 위해 새로운 날짜-시간 API가 도입되었습니다.
스레드로부터 안전하지 않음 − java.util.Date는 스레드로부터 안전하지 않으므로 개발자는 날짜를 사용하는 동안 동시성 문제를 처리해야 합니다. 새로운 날짜-시간 API는 변경할 수 없으며 setter 메서드가 없습니다.
불량한 디자인 − 기본 날짜는 1900년부터 시작하고, 월은 1부터 시작하고, 일은 0부터 시작하므로 균일성이 없습니다. 이전 API에는 날짜 작업에 대한 직접적인 방법이 적었습니다. 새로운 API는 이러한 작업을 위한 다양한 유틸리티 메서드를 제공합니다.
어려운 시간대 처리 − 개발자는 시간대 문제를 처리하기 위해 많은 코드를 작성해야 했습니다. 새로운 API는 도메인별 디자인을 염두에 두고 개발되었습니다.
Java 8은 java.time 패키지 아래에 새로운 날짜-시간 API를 도입했습니다. 다음은 java.time 패키지에 도입된 몇 가지 중요한 클래스입니다.
로컬 − 복잡한 시간대 처리가 없는 간소화된 날짜-시간 API.
존 − 다양한 시간대를 처리하는 특수 날짜-시간 API.
LocalDate/LocalTime 및 LocalDateTime 클래스는 시간대가 필요하지 않은 개발을 단순화합니다. 그들의 행동을 보자.
예를 들어 C:\> JAVA.
에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.Month; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testLocalDateTime(); } public void testLocalDateTime() { // Get the current date and time LocalDateTime currentTime = LocalDateTime.now(); System.out.println("Current DateTime: " + currentTime); LocalDate date1 = currentTime.toLocalDate(); System.out.println("date1: " + date1); Month month = currentTime.getMonth(); int day = currentTime.getDayOfMonth(); int seconds = currentTime.getSecond(); System.out.println("Month: " + month +"day: " + day +"seconds: " + seconds); LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012); System.out.println("date2: " + date2); //12 december 2014 LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12); System.out.println("date3: " + date3); //22 hour 15 minutes LocalTime date4 = LocalTime.of(22, 15); System.out.println("date4: " + date4); //parse a string LocalTime date5 = LocalTime.parse("20:15:30"); System.out.println("date5: " + date5); } }
javac를 사용하여 클래스 컴파일 다음과 같이 컴파일러 -
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오 -
C:\JAVA>java Java8Tester
다음 출력을 생성해야 합니다 -
Current DateTime: 2014-12-09T11:00:45.457 date1: 2014-12-09 Month: DECEMBERday: 9seconds: 45 date2: 2012-12-10T11:00:45.457 date3: 2014-12-12 date4: 22:15 date5: 20:15:30
시간대를 고려할 때 Zoned date-time API를 사용합니다. 그들의 행동을 살펴봅시다.
예를 들어 C:\> JAVA.
에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.import java.time.ZonedDateTime; import java.time.ZoneId; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testZonedDateTime(); } public void testZonedDateTime() { // Get the current date and time ZonedDateTime date1 = ZonedDateTime.parse("2007-12-03T10:15:30+05:30[Asia/Karachi]"); System.out.println("date1: " + date1); ZoneId id = ZoneId.of("Europe/Paris"); System.out.println("ZoneId: " + id); ZoneId currentZone = ZoneId.systemDefault(); System.out.println("CurrentZone: " + currentZone); } }
javac를 사용하여 클래스 컴파일 다음과 같이 컴파일러 -
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오 -
C:\JAVA>java Java8Tester
다음 출력을 생성해야 합니다 -
date1: 2007-12-03T10:15:30+05:00[Asia/Karachi] ZoneId: Europe/Paris CurrentZone: Etc/UTC
java.time.temporal.ChronoUnit enum은 이전 API에서 일, 월 등을 나타내는 정수 값을 대체하기 위해 Java 8에 추가되었습니다. 작동 방식을 살펴보겠습니다.
예를 들어 C:\> JAVA.
에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testChromoUnits(); } public void testChromoUnits() { //Get the current date LocalDate today = LocalDate.now(); System.out.println("Current date: " + today); //add 1 week to the current date LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS); System.out.println("Next week: " + nextWeek); //add 1 month to the current date LocalDate nextMonth = today.plus(1, ChronoUnit.MONTHS); System.out.println("Next month: " + nextMonth); //add 1 year to the current date LocalDate nextYear = today.plus(1, ChronoUnit.YEARS); System.out.println("Next year: " + nextYear); //add 10 years to the current date LocalDate nextDecade = today.plus(1, ChronoUnit.DECADES); System.out.println("Date after ten year: " + nextDecade); } }
javac를 사용하여 클래스 컴파일 다음과 같이 컴파일러 -
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오 -
C:\JAVA>java Java8Tester
다음 결과를 생성해야 합니다 -
Current date: 2014-12-10 Next week: 2014-12-17 Next month: 2015-01-10 Next year: 2015-12-10 Date after ten year: 2024-12-10
Java 8에서는 시차를 처리하기 위해 두 개의 특수 클래스가 도입되었습니다.
기간 − 날짜 기반 시간을 다룹니다.
기간 − 시간 기반의 시간을 다룹니다.
그들의 행동을 살펴봅시다.
예를 들어 C:\> JAVA.
에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.import java.time.temporal.ChronoUnit; import java.time.LocalDate; import java.time.LocalTime; import java.time.Duration; import java.time.Period; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testPeriod(); java8tester.testDuration(); } public void testPeriod() { //Get the current date LocalDate date1 = LocalDate.now(); System.out.println("Current date: " + date1); //add 1 month to the current date LocalDate date2 = date1.plus(1, ChronoUnit.MONTHS); System.out.println("Next month: " + date2); Period period = Period.between(date2, date1); System.out.println("Period: " + period); } public void testDuration() { LocalTime time1 = LocalTime.now(); Duration twoHours = Duration.ofHours(2); LocalTime time2 = time1.plus(twoHours); Duration duration = Duration.between(time1, time2); System.out.println("Duration: " + duration); } }
javac를 사용하여 클래스 컴파일 다음과 같이 컴파일러 -
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오 -
C:\JAVA>java Java8Tester
다음 출력을 생성해야 합니다 -
Current date: 2014-12-10 Next month: 2015-01-10 Period: P-1M Duration: PT2H
TemporalAdjuster는 날짜 수학을 수행하는 데 사용됩니다. 예를 들어 "매월 두 번째 토요일" 또는 "다음 화요일"을 가져옵니다. 그들의 행동을 살펴봅시다.
예를 들어 C:\> JAVA.
에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.time.DayOfWeek; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testAdjusters(); } public void testAdjusters() { //Get the current date LocalDate date1 = LocalDate.now(); System.out.println("Current date: " + date1); //get the next tuesday LocalDate nextTuesday = date1.with(TemporalAdjusters.next(DayOfWeek.TUESDAY)); System.out.println("Next Tuesday on : " + nextTuesday); //get the second saturday of next month LocalDate firstInYear = LocalDate.of(date1.getYear(),date1.getMonth(), 1); LocalDate secondSaturday = firstInYear.with(TemporalAdjusters.nextOrSame( DayOfWeek.SATURDAY)).with(TemporalAdjusters.next(DayOfWeek.SATURDAY)); System.out.println("Second Saturday on : " + secondSaturday); } }
javac를 사용하여 클래스 컴파일 다음과 같이 컴파일러 -
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오 -
C:\JAVA>java Java8Tester
다음 결과를 생성해야 합니다 -
Current date: 2014-12-10 Next Tuesday on : 2014-12-16 Second Saturday on : 2014-12-13
toInstant() 메서드가 원본 Date 및 Calendar 객체에 추가되어 이를 새로운 Date-Time API로 변환하는 데 사용할 수 있습니다. ofInstant(Insant,ZoneId) 메서드를 사용하여 LocalDateTime 또는 ZonedDateTime 개체를 가져옵니다. 그들의 행동을 살펴봅시다.
예를 들어 C:\> JAVA.
에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.import java.time.LocalDateTime; import java.time.ZonedDateTime; import java.util.Date; import java.time.Instant; import java.time.ZoneId; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testBackwardCompatability(); } public void testBackwardCompatability() { //Get the current date Date currentDate = new Date(); System.out.println("Current date: " + currentDate); //Get the instant of current date in terms of milliseconds Instant now = currentDate.toInstant(); ZoneId currentZone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(now, currentZone); System.out.println("Local date: " + localDateTime); ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(now, currentZone); System.out.println("Zoned date: " + zonedDateTime); } }
javac를 사용하여 클래스 컴파일 다음과 같이 컴파일러 -
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오 -
C:\JAVA>java Java8Tester
다음 출력을 생성해야 합니다 -
Current date: Wed Dec 10 05:44:06 UTC 2014 Local date: 2014-12-10T05:44:06.635 Zoned date: 2014-12-10T05:44:06.635Z[Etc/UTC]
java
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 LCD용 I2C 모듈 × 1 실시간 시계(RTC) × 1 SparkFun 푸시버튼 스위치 12mm × 3 저항 10k 옴 × 3 점퍼 와이어(일반) × 1 이 프로젝트 정보 소개 이 시계는 많은 내 프로젝트의 기초입니다. 저는 2012년에 튜토리얼을
제조 부문이 유동적인 상태에 있다는 것은 비밀이 아닙니다. 최근 코로나바이러스 전염병, 국지적 전쟁, 공급망 문제 등 다양한 글로벌 및 지역적 변화로 인해 많은 제조업체가 빠르게 변화하는 비즈니스 환경을 따라잡기 위해 고군분투하고 있습니다. 많은 제조업체가 스스로에게 묻는 질문은 지금이 새로운 기술을 구매할 때입니까? 로봇과 같은 기술과 로봇 프로그래밍 소프트웨어와 같은 관련 기술은 제조 프로세스를 성장시키고 개선하는 데 도움이 될 수 있습니다. 하지만 먼저 로봇이 자신에게 적합한 기술인지 확인해야 합니다. 새로운 제조 기술을