<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>data - Kama Kaczmarek</title>
	<atom:link href="https://kamakaczmarek.net/tag/data/feed/" rel="self" type="application/rss+xml" />
	<link>https://kamakaczmarek.net/tag/data/</link>
	<description>Strona z materiałami dla uczniów i nauczycieli</description>
	<lastBuildDate>Fri, 04 Jun 2021 11:28:10 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>12. JAVA &#8211; obsługa daty i czasu</title>
		<link>https://kamakaczmarek.net/12-java-obsluga-daty-i-czasu/</link>
		
		<dc:creator><![CDATA[Kama]]></dc:creator>
		<pubDate>Thu, 27 May 2021 13:11:09 +0000</pubDate>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[czas]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data i czas]]></category>
		<category><![CDATA[java]]></category>
		<guid isPermaLink="false">https://kamakaczmarek.net/?p=2585</guid>

					<description><![CDATA[<p>W JAVA, jak i w innych językach, możemy dokonywać pewnych operacji na dacie i czasie np. pobierać aktualne dane, formatować ich wyświetlanie itp. Date i getTime jest to klasa prosta, za pomocą której pobieramy aktualną datę i czas z dokładnością do milisekund. Więcej w dokumentacji. Aby skorzystać z tej klasy, należy zaimportować na początku kodu [&#8230;]</p>
<p>Artykuł <a href="https://kamakaczmarek.net/12-java-obsluga-daty-i-czasu/">12. JAVA &#8211; obsługa daty i czasu</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>W JAVA, jak i w innych językach, możemy dokonywać pewnych operacji na dacie i czasie np. pobierać aktualne dane, formatować ich wyświetlanie itp.</p>
<h2>Date i getTime</h2>
<p>jest to klasa prosta, za pomocą której pobieramy aktualną datę i czas z dokładnością do milisekund. Więcej w <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Date.html">dokumentacji.</a></p>
<p>Aby skorzystać z tej klasy, należy zaimportować na początku kodu odpowiednią bibliotekę: <strong>import java.util.Date;</strong></p>
<pre class="prettyprint"><span style="font-size: 12pt;">Date date = new Date(); //w () możemy podać konkretny timestamp</span><br /><span style="font-size: 12pt;">System.out.println(date.toString()); //Wed May 26 20:14:21 CEST 2021</span><br /><br /><span style="font-size: 12pt;">//liczba milisekund, które upłynęły od nastania Ery Unixu: 1 stycznia 1970, 0:00:00 GMT.</span><br /><span style="font-size: 12pt;">System.out.println(date.getTime());</span></pre>
<h2>SimpleDateFormat</h2>
<p>służy do pobierania daty w preferowanym formacie, a format wyświetlania daty możemy dostosować wedle uznania, wykorzystując odpowiednie parametry (poniższa tabela pochodzi z <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html">dokumentacji</a>):</p>
<table class="striped" style="width: 100%; height: 999px;">
<thead>
<tr style="height: 31px;">
<th style="width: 5.2381%; height: 31px;" scope="col">Letter</th>
<th style="width: 40.2381%; height: 31px;" scope="col">Date or Time Component</th>
<th style="width: 16.6667%; height: 31px;" scope="col">Presentation</th>
<th style="width: 37.7381%; height: 31px;" scope="col">Examples</th>
</tr>
</thead>
<tbody>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">G</code></th>
<td style="width: 40.2381%; padding-left: 80px; height: 42px;">Era designator</td>
<td style="width: 16.6667%; height: 42px;">Text</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">AD</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">y</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Year</td>
<td style="width: 16.6667%; height: 42px;">Year</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">1996</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">96</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">Y</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Week year</td>
<td style="width: 16.6667%; height: 42px;">Year</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">2009</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">09</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">M</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Month in year (context sensitive)</td>
<td style="width: 16.6667%; height: 42px;">Month</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">July</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">Jul</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">07</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">L</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Month in year (standalone form)</td>
<td style="width: 16.6667%; height: 42px;">Month</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">July</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">Jul</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">07</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">w</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Week in year</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">27</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">W</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Week in month</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">2</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">D</code></th>
<td style="width: 40.2381%; padding-left: 80px; height: 42px;">Day in year</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">189</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">d</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Day in month</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">10</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">F</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Day of week in month</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">2</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">E</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Day name in week</td>
<td style="width: 16.6667%; height: 42px;">Text</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">Tuesday</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">Tue</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">u</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Day number of week (1 = Monday, &#8230;, 7 = Sunday)</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">1</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Am/pm marker</td>
<td style="width: 16.6667%; height: 42px;">Text</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">PM</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">H</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Hour in day (0-23)</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">0</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">k</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Hour in day (1-24)</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">24</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">K</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Hour in am/pm (0-11)</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">0</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">h</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Hour in am/pm (1-12)</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">12</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">m</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Minute in hour</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">30</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">s</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Second in minute</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">55</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">S</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Millisecond</td>
<td style="width: 16.6667%; height: 42px;">Number</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">978</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">z</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Time zone</td>
<td style="width: 16.6667%; height: 42px;">General time zone</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">Pacific Standard Time</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">PST</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">GMT-08:00</code></td>
</tr>
<tr style="height: 42px;">
<th style="width: 5.2381%; height: 42px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">Z</code></th>
<td style="width: 40.2381%; height: 42px; padding-left: 80px;">Time zone</td>
<td style="width: 16.6667%; height: 42px;">RFC 822 time zone</td>
<td style="width: 37.7381%; height: 42px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">-0800</code></td>
</tr>
<tr style="height: 44px;">
<th style="width: 5.2381%; height: 44px;" scope="row"><code class="prettyprint lang-sql" style="font-size: 0.85em;">X</code></th>
<td style="width: 40.2381%; height: 44px; padding-left: 80px;">Time zone</td>
<td style="width: 16.6667%; height: 44px;">ISO 8601 time zone</td>
<td style="width: 37.7381%; height: 44px;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">-08</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">-0800</code>; <code class="prettyprint lang-sql" style="font-size: 0.85em;">-08:00</code></td>
</tr>
</tbody>
</table>
<h4>Przykłady:</h4>
<p>Aby skorzystać z tej klasy, należy zaimportować na początku kodu odpowiednią bibliotekę:</p>
<p><strong>import java.text.SimpleDateFormat;</strong></p>
<pre class="prettyprint"><span style="font-size: 12pt;">Date date = new Date();</span><br /><span style="font-size: 12pt;">SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss 'w dniu' dd MM yyyy");</span><br /><span style="font-size: 12pt;">System.out.println(dateFormat.format(date));</span><br /><br /><br /><span style="font-size: 12pt;">SimpleDateFormat dateFormat1 = new SimpleDateFormat("'dzisiaj jest: 'E 'lub możemy wypisać' EEEE");</span><br /><span style="font-size: 12pt;">System.out.println(dateFormat1.format(date));</span></pre>
<p>&nbsp;</p>
<h2>Calendar</h2>
<p>to następca klasy Date, służy do odczytywania oraz modyfikowania daty i czasu w przyszłość lub przeszłość (<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Calendar.html">dokumentacja</a>).</p>
<p>Aby skorzystać z tej klasy, należy zaimportować na początku kodu odpowiednią bibliotekę: <strong>import java.util.Calendar;</strong></p>
<h4>Przykład:</h4>
<pre class="prettyprint"><span style="font-size: 12pt;">Date date = new Date();</span><br /><span style="font-size: 12pt;">SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss 'w dniu' dd MM yyyy");</span><br /><span style="font-size: 12pt;">System.out.println(dateFormat.format(date));</span><br /><br /><span style="font-size: 12pt;">//korzystamy z już zadeklarowanej zmiennej date</span><br /><span style="font-size: 12pt;">Calendar cal = Calendar.getInstance();</span><br /><span style="font-size: 12pt;">cal.setTime(date);</span><br /><br /><span style="font-size: 12pt;">//za pomocą add dodajemy lub odejmujemy od aktualnego np. miesiąca wartości</span><br /><span style="font-size: 12pt;">cal.add(Calendar.MONTH, 6); </span><br /><br /><span style="font-size: 12pt;">Date for6months = cal.getTime();</span><br /><span style="font-size: 12pt;">System.out.println("Przerejestrowanie działalności należy wykonać: " + for6months);</span><br /><br /><span style="font-size: 12pt;">cal.add(Calendar.WEEK_OF_MONTH, 5);</span><br /><span style="font-size: 12pt;">Date nextVaccine = cal.getTime();</span><br /><br /><span style="font-size: 12pt;">SimpleDateFormat df = new SimpleDateFormat("EEEE dd.MM.YYYY 'na godzinę' HH:mm:ss");</span><br /><br /><span style="font-size: 12pt;">System.out.println("Pierwsza dawka szczepionki planowana na : " + df.format(for6months));</span><br /><span style="font-size: 12pt;">System.out.println("Następna dawka szczepionki: " + df.format(nextVaccine));</span></pre>
<p><span style="font-size: 12pt;">Na bazie tej klasy możemy wykonać bardzo dużo operacji, zainteresowanych odsyłam do <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Calendar.html">dokumentacji</a>.</span></p>
<pre class="prettyprint"><span style="font-size: 12pt;">//określanie dnia tygonia</span><br /><span style="font-size: 12pt;">//za pomocą set ustawiamy datę - uwaga na miesiąc, numeracja rozpoczyna się od 0</span><br /><span style="font-size: 12pt;">Calendar cal2 = GregorianCalendar.getInstance();</span><br /><span style="font-size: 12pt;">cal2.set(Calendar.YEAR, 2000);</span><br /><span style="font-size: 12pt;">cal2.set(Calendar.MONTH, 9); // numeracja miesięcy od 0</span><br /><span style="font-size: 12pt;">cal2.set(Calendar.DAY_OF_MONTH, 5);</span><br /><span style="font-size: 12pt;">cal2.set(Calendar.HOUR_OF_DAY, 2);</span><br /><span style="font-size: 12pt;">cal2.set(Calendar.MINUTE, 0);</span><br /><span style="font-size: 12pt;">cal2.set(Calendar.SECOND, 0);</span><br /><span style="font-size: 12pt;">Date test = cal2.getTime();</span><br /><span style="font-size: 12pt;">SimpleDateFormat bdf = new SimpleDateFormat("EEEE dd.MM.YYYY 'o godzinie' HH:mm:ss");</span><br /><span style="font-size: 12pt;">System.out.println("Urodziłam się " + bdf.format(test));</span></pre>
<p>&nbsp;</p>
<h2>LocalTime, LocalDate i LocalDateTime</h2>
<p>Myślenie o dacie i czasie w kontekście programowania musiało ewoluować. Proste podejście wykorzystujące typ Date przestało być wystarczające. Idąc za ciosem twórcy Javy dodali nowe klasy, które pomagają usprawnić pracę nad obsługą konkretnego momentu zdarzenia, a ten jest różny w różnych miejscach na świecie.</p>
<p>Tam, gdzie tylko jest to możliwe należy używać Localdate, LocalTime i LocalDateTime.</p>
<p>Razem z nowymi typami pojawiają się nowe pojęcia:</p>
<p><em><strong>Instant &#8211; </strong></em><em>to konkretny punkt w czasie</em></p>
<h4><em><strong>LocalDate &#8211; </strong>data <span class="Y2IQFc" lang="pl"> bez strefy czasowej. </span></em></h4>
<p>Co mówi nam dokumentacja:</p>
<blockquote>
<p><span class="Y2IQFc" lang="pl">Data bez strefy czasowej w systemie kalendarza ISO-8601, na przykład 2007-12-03. </span></p>
<p><span class="Y2IQFc" lang="pl">LocalDate to niezmienny obiekt daty i godziny, który reprezentuje datę, często postrzeganą jako rok-miesiąc-dzień. Można również uzyskać dostęp do innych pól dat, takich jak dzień roku, dzień tygodnia i tydzień roku. Na przykład wartość „2 października 2007” można zapisać w LocalDate. </span></p>
<p><span class="Y2IQFc" lang="pl">Ta klasa nie przechowuje ani nie reprezentuje czasu ani strefy czasowej. Przedstawia opis daty. Nie może przedstawiać chwili na osi czasu bez dodatkowych informacji, takich jak przesunięcie lub strefa czasowa. </span></p>
<p><span class="Y2IQFc" lang="pl">System kalendarzy ISO-8601 to nowoczesny system kalendarzy cywilnych używany obecnie w większości krajów świata. Jest to odpowiednik proleptycznego systemu kalendarza gregoriańskiego, w którym dzisiejsze zasady dotyczące lat przestępnych są stosowane przez cały czas. W przypadku większości dzisiejszych aplikacji reguły ISO-8601 są całkowicie odpowiednie. Jednak każda aplikacja, która korzysta z dat historycznych i wymaga, aby były one dokładne, uzna podejście ISO-8601 za nieodpowiednie. To jest klasa oparta na wartościach; użycie operacji wrażliwych na tożsamość (w tym równości odwołań (==), kodu skrótu tożsamości lub synchronizacji) na wystąpieniach LocalDate może mieć nieprzewidywalne wyniki i należy go unikać. Do porównań należy stosować metodę równości.</span></p>
</blockquote>
<h4><em><strong>LocalTime &#8211; </strong>czas <span class="Y2IQFc" lang="pl"> bez strefy czasowej</span><br /></em></h4>
<p>Co mówi nam dokumentacja:</p>
<blockquote>
<p id="tw-target-text" class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">Czas bez strefy czasowej w systemie kalendarza ISO-8601, na przykład 10:15:30. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">LocalTime to niezmienny obiekt daty i godziny, który reprezentuje czas, często wyświetlany jako godzina-minuta-sekunda. Czas jest przedstawiany z dokładnością do nanosekund. Na przykład wartość „13: 45.30.123456789” może być przechowywana w LocalTime. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">Ta klasa nie przechowuje ani nie reprezentuje daty ani strefy czasowej. Przedstawia opis czasu lokalnego widoczny na zegarze ściennym. Nie może przedstawiać chwili na osi czasu bez dodatkowych informacji, takich jak przesunięcie lub strefa czasowa. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">System kalendarzy ISO-8601 to nowoczesny system kalendarzy cywilnych używany obecnie w większości krajów świata. Ten interfejs API zakłada, że ​​wszystkie systemy kalendarza używają tej samej reprezentacji, tej klasy, dla pory dnia. To jest klasa oparta na wartościach; użycie operacji wrażliwych na tożsamość (w tym równości odwołań (==), kodu skrótu tożsamości lub synchronizacji) na wystąpieniach LocalTime może mieć nieprzewidywalne wyniki i należy go unikać. Do porównań należy stosować metodę równości.</span></p>
</blockquote>
<h4><em><strong>LocalDateTime &#8211; </strong>data i czas <span class="Y2IQFc" lang="pl"> bez strefy czasowej</span><br /></em></h4>
<p>Co mówi nam dokumentacja:</p>
<blockquote>
<p id="tw-target-text" class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">Data-godzina bez strefy czasowej w systemie kalendarza ISO-8601, na przykład 2007-12-03T10: 15: 30. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">LocalDateTime to niezmienny obiekt daty i godziny, który reprezentuje datę i godzinę, często wyświetlany jako rok-miesiąc-dzień-godzina-minuta-sekunda. Można również uzyskać dostęp do innych pól daty i godziny, takich jak dzień roku, dzień tygodnia i tydzień roku. Czas jest przedstawiany z dokładnością do nanosekund. Na przykład wartość „2 października 2007 o 13: 45.30.123456789” może być przechowywana w LocalDateTime. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">Ta klasa nie przechowuje ani nie reprezentuje strefy czasowej. Zamiast tego jest to opis daty używany w przypadku urodzin, w połączeniu z czasem lokalnym, jak widać na zegarze ściennym. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">Nie może przedstawiać chwili na osi czasu bez dodatkowych informacji, takich jak przesunięcie lub strefa czasowa. System kalendarzy ISO-8601 to nowoczesny system kalendarzy cywilnych używany obecnie w większości krajów świata. Jest to odpowiednik proleptycznego systemu kalendarza gregoriańskiego, w którym dzisiejsze zasady dotyczące lat przestępnych są stosowane przez cały czas. W przypadku większości dzisiejszych aplikacji reguły ISO-8601 są całkowicie odpowiednie. Jednak każda aplikacja, która korzysta z dat historycznych i wymaga, aby były one dokładne, uzna podejście ISO-8601 za nieodpowiednie. To jest klasa oparta na wartościach; użycie operacji wrażliwych na tożsamość (w tym równości odwołań (==), kodu skrótu tożsamości lub synchronizacji) na wystąpieniach LocalDateTime może mieć nieprzewidywalne wyniki i należy go unikać. Do porównań należy stosować metodę równości.</span></p>
</blockquote>
<h4><em><strong>ZonedDateTime &#8211; </strong>data i czas ze strefą czasową<br /></em></h4>
<p>Co mówi nam dokumentacja:</p>
<blockquote>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">Data-czas ze strefą czasową w systemie kalendarza ISO-8601, na przykład 2007-12-03T10: 15: 30 + 01: 00 Europe / Paris. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">ZonedDateTime jest niezmienną reprezentacją daty i godziny ze strefą czasową. Ta klasa przechowuje wszystkie pola daty i czasu z dokładnością do nanosekund i strefą czasową, z przesunięciem strefy używanym do obsługi niejednoznacznych lokalnych dat i godzin. Na przykład wartość „2 października 2007 o godzinie 13: 45.30.123456789 +02: 00 w strefie czasowej Europa / Paryż” może być przechowywana w ZonedDateTime. </span></p>
<p class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">Ta klasa obsługuje konwersję z lokalnej osi czasu LocalDateTime do natychmiastowej osi czasu Instant. Różnica między dwiema osiami czasu to przesunięcie względem czasu UTC / Greenwich, reprezentowane przez ZoneOffset. Konwersja między dwiema osiami czasu obejmuje obliczenie przesunięcia przy użyciu reguł dostępnych z ZoneId. Uzyskanie przesunięcia na chwilę jest proste, ponieważ na każdą chwilę przypada dokładnie jedno prawidłowe przesunięcie. Natomiast uzyskanie przesunięcia dla lokalnej daty i godziny nie jest proste. Istnieją trzy przypadki: Normalny, z jednym ważnym przesunięciem. Przez zdecydowaną większość roku ma zastosowanie normalny przypadek, w którym istnieje jedno ważne przesunięcie dla lokalnej daty i godziny. Luka, z zerowymi prawidłowymi przesunięciami. Dzieje się tak, gdy zegary przeskakują do przodu, zwykle z powodu wiosennej zmiany czasu letniego z „zimowego” na „letni”. W przerwie znajdują się lokalne wartości daty i godziny bez prawidłowego przesunięcia. Pokrywają się, z dwoma prawidłowymi przesunięciami. Dzieje się tak, gdy zegary są zwykle cofane z powodu zmiany czasu letniego z „lata” na „zimę”. W przypadku nakładania się istnieją lokalne wartości daty i godziny z dwoma prawidłowymi przesunięciami. Każda metoda, która konwertuje bezpośrednio lub niejawnie z lokalnej daty i godziny na chwilę przez uzyskanie przesunięcia, może być skomplikowana.</span></p>
<p id="tw-target-text" class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">W przypadku przerw ogólną strategią jest to, że jeśli lokalna data-godzina wypada w środku przerwy, wynikowa data-czas strefowy będzie miała lokalną datę i godzinę przesuniętą do przodu o długość przerwy, co spowoduje czas w późniejszym przesunięciu, zazwyczaj czas „letni”. W przypadku nakładania się ogólna strategia polega na tym, że jeśli lokalna data i godzina przypadają w środku nakładania się, to poprzednie przesunięcie zostanie zachowane. Jeśli nie ma poprzedniego przesunięcia lub poprzednie przesunięcie jest nieprawidłowe, używane jest wcześniejsze przesunięcie, zwykle czas „letni”. Dwie dodatkowe metody, withEarlierOffsetAtOverlap () i withLaterOffsetAtOverlap (), pomagają zarządzać przypadkami nakładania się. Pod względem projektu tę klasę należy postrzegać przede wszystkim jako połączenie LocalDateTime i ZoneId. ZoneOffset jest istotną, ale drugorzędną informacją, używaną do zapewnienia, że ​​klasa reprezentuje chwilę, szczególnie podczas nakładania się czasu letniego. To jest klasa oparta na wartościach; użycie operacji wrażliwych na tożsamość (w tym równości odwołań (==), kodu skrótu tożsamości lub synchronizacji) na wystąpieniach ZonedDateTime może mieć nieprzewidywalne wyniki i należy go unikać. Do porównań należy stosować metodę równości. Wymagania dotyczące implementacji: ZonedDateTime przechowuje stan odpowiadający trzem oddzielnym obiektom, LocalDateTime, ZoneId i rozwiązanym ZoneOffset. Przesunięcie i lokalna data-czas są używane do definiowania chwili, gdy jest to konieczne. Identyfikator strefy służy do uzyskiwania reguł określających, jak i kiedy zmienia się przesunięcie. Przesunięcia nie można dowolnie ustawiać, ponieważ strefa kontroluje, które przesunięcia są prawidłowe. Ta klasa jest niezmienna i bezpieczna dla wątków.</span></p>
</blockquote>
<p id="tw-target-text" class="tw-data-text tw-text-large XcVN5d tw-ta" dir="ltr" data-placeholder="Tłumaczenie"><span class="Y2IQFc" lang="pl">&nbsp;</span></p>
<p>Aby skorzystać z tych klas, należy zaimportować na początku kodu odpowiednią bibliotekę: <strong>import java.time.*;</strong></p>
<h4>Przykłady:</h4>
<pre class="prettyprint"><span style="font-size: 12pt;">//LocalDate</span><br /><span style="font-size: 12pt;">LocalDate ld = LocalDate.now();</span><br /><span style="font-size: 12pt;">System.out.println(ld); //2021-05-27</span><br /><span style="font-size: 12pt;">System.out.println(ld.getDayOfMonth()); //27</span><br /><span style="font-size: 12pt;">System.out.println(ld.getMonth()); //MAY</span><br /><span style="font-size: 12pt;">System.out.println(ld.getMonthValue()); //5</span><br /><span style="font-size: 12pt;">System.out.println(ld.getYear()); //2021</span><br /><span style="font-size: 12pt;">//dodawanie i odejmowanie</span><br /><span style="font-size: 12pt;">System.out.println(ld.plusDays(5)); //2021-06-01</span><br /><span style="font-size: 12pt;">System.out.println(ld.minusMonths(1)); //2021-04-27</span><br /><span style="font-size: 12pt;">//itd...</span><br /><br /></pre>
<pre class="prettyprint"><span style="font-size: 12pt;">//LocalTime</span><br /><span style="font-size: 12pt;">LocalTime lt = LocalTime.now();</span><br /><span style="font-size: 12pt;">System.out.println(lt); //14:06:42.649617200</span><br /><span style="font-size: 12pt;">System.out.println(lt.getHour()); //14</span><br /><span style="font-size: 12pt;">System.out.println(lt.getMinute()); //6</span><br /><span style="font-size: 12pt;">System.out.println(lt.getSecond()); //42</span><br /><span style="font-size: 12pt;">System.out.println(lt.getNano()); //649617200</span><br /><span style="font-size: 12pt;">//dodawanie i odejmowanie</span><br /><span style="font-size: 12pt;">System.out.println(lt.plusHours(5)); //19:06:42.649617200</span><br /><span style="font-size: 12pt;">System.out.println(lt.minusMinutes(1)); //14:05:42.649617200</span><br /><span style="font-size: 12pt;">//itd...</span></pre>
<pre class="prettyprint"><span style="font-size: 12pt;">//LocalDateTime</span><br /><span style="font-size: 12pt;">LocalDateTime ldt = LocalDateTime.now();</span><br /><span style="font-size: 12pt;">System.out.println(ldt); //2021-05-27T14:23:20.115568100</span><br /><span style="font-size: 12pt;">//sformatujemy wyświetlanie daty kolejną klasą</span><br /><span style="font-size: 12pt;">DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");</span><br /><span style="font-size: 12pt;">System.out.println(dtf.format(ldt));//27-05-2021 14:23:20</span><br /><span style="font-size: 12pt;">//pobieramy dane</span><br /><span style="font-size: 12pt;">System.out.println(ldt.getDayOfMonth()); //27</span><br /><span style="font-size: 12pt;">System.out.println(ldt.getHour()); //14</span><br /><span style="font-size: 12pt;">//dodajemy i odejmujemy</span><br /><span style="font-size: 12pt;">System.out.println(ldt.minusYears(1));//2020-05-27T14:26:04.070597700</span><br /><span style="font-size: 12pt;">System.out.println(ldt.plusDays(1));//2021-05-28T14:26:04.070597700</span></pre>
<h4>Zadanie:</h4>
<p>Sprawdź w jaki dzień tygodnia się urodziłeś.</p>
<p>Artykuł <a href="https://kamakaczmarek.net/12-java-obsluga-daty-i-czasu/">12. JAVA &#8211; obsługa daty i czasu</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
