|
| 1 | +package com.baeldung.nscalatime |
| 2 | + |
| 3 | +import com.github.nscala_time.time.Imports.* |
| 4 | +import java.util.Date |
| 5 | +import java.util.Calendar |
| 6 | +import java.util.Locale |
| 7 | +import org.joda.time.chrono.EthiopicChronology |
| 8 | +import org.joda.time.DateTime.Property |
| 9 | +import com.github.nscala_time.time.DurationBuilder |
| 10 | +import org.joda.time.format.DateTimeFormatter |
| 11 | + |
| 12 | +object NScalaTime: |
| 13 | + // working with DateTime |
| 14 | + val st: DateTime = DateTime.now() |
| 15 | + val parsedDate: DateTime = DateTime.parse("2024-08-07") |
| 16 | + val parsedDate2: DateTime = DateTime.parse("2024") |
| 17 | + |
| 18 | + // JDK interoperability |
| 19 | + val jdkDate: Date = new Date() |
| 20 | + val convertTo: DateTime = new DateTime(jdkDate) |
| 21 | + |
| 22 | + val jdkCal: Calendar = Calendar.getInstance() |
| 23 | + val st2: DateTime = new DateTime(jdkCal) |
| 24 | + |
| 25 | + val st3: DateTime = new DateTime |
| 26 | + val cal: Calendar = st3.gregorianCalendar |
| 27 | + |
| 28 | + // querrying Datetime |
| 29 | + val dayOfWeek: Property = new DateTime().dayOfWeek() |
| 30 | + val shortText: String = dayOfWeek.asShortText |
| 31 | + val asText: String = dayOfWeek.asText |
| 32 | + val monthOfYearString: String = DateTime.now().monthOfYear().getAsText() |
| 33 | + val monthOfYearStringFrench: String = |
| 34 | + DateTime.now().monthOfYear().getAsShortText(Locale.FRENCH) |
| 35 | + val isLeapYear: Boolean = DateTime.now().year().isLeap() |
| 36 | + val nowToTomorrow: Interval = DateTime.now().to(DateTime.tomorrow()) |
| 37 | + |
| 38 | + // Accessing fields |
| 39 | + // Date fields |
| 40 | + val st4: DateTime = new DateTime() |
| 41 | + val era: String = st4.era.asText |
| 42 | + val year2: String = st4.year.asText |
| 43 | + val centOfEra: String = st4.centuryOfEra.asText |
| 44 | + val yrOfEra: String = st4.yearOfEra.asText |
| 45 | + val yrOfCent: String = st4.yearOfCentury.asText |
| 46 | + val monthOfYr: String = st4.monthOfYear.asText |
| 47 | + val dayOfYr: String = st4.dayOfYear.asText |
| 48 | + val dayOfMonth: String = st4.dayOfMonth.asText |
| 49 | + val dayOfWeek2: String = st4.dayOfWeek.asText |
| 50 | + // Time fields |
| 51 | + val hrOfDay: String = st4.hourOfDay.asText |
| 52 | + val minOfHr: String = st4.minuteOfHour.asText |
| 53 | + val secOfMin: String = st4.secondOfMinute.asText |
| 54 | + |
| 55 | + // Manipulating datetimes |
| 56 | + val compare: Boolean = DateTime.now() < DateTime.lastMonth() |
| 57 | + val addVarious: Period = 2.month + 5.hours + 6.millis |
| 58 | + val less5: DateTime = DateTime.now() - 5.days |
| 59 | + val sampleDuration: DurationBuilder = 4.hours + 30.minutes + 10.seconds |
| 60 | + val datetimebeforeDuration: DateTime = sampleDuration.before(DateTime.now()) |
| 61 | + val changeTZ: DateTime = less5.withZone(DateTimeZone.forID("Africa/Kampala")) |
| 62 | + val chrono: DateTime = less5.withChronology(EthiopicChronology.getInstance()) |
| 63 | + val ethioYear: Int = chrono.getYear() |
| 64 | + |
| 65 | + // formatters |
| 66 | + val fmt: DateTimeFormatter = DateTimeFormat.forPattern("dd-MM-yyyy") |
| 67 | + val st5: DateTime = fmt.parseDateTime("31-07-2024") |
| 68 | + |
| 69 | +import NScalaTime.* |
| 70 | +@main def sTime(): Unit = |
| 71 | + println(st5) |
0 commit comments