Ο τύπος DateTime
στην C# χρησιμοποιείται για την αποθήκευση και τον χειρισμό ημερομηνιών και ωρών. Είναι ένας από τους πιο σημαντικούς τύπους δεδομένων όταν χρειάζεσαι να διαχειριστείς χρόνο ή ημερομηνίες σε μια εφαρμογή.
Ας αναλύσουμε τον τύπο DateTime
με απλό τρόπο:
1. Δημιουργία αντικειμένου DateTime
Υπάρχουν διάφοροι τρόποι για να δημιουργήσεις ένα αντικείμενο DateTime
. Μπορείς να το δημιουργήσεις είτε με την τρέχουσα ημερομηνία και ώρα, είτε με συγκεκριμένη ημερομηνία και ώρα.
1.1 Η τρέχουσα ημερομηνία και ώρα
Μπορείς να πάρεις την τρέχουσα ημερομηνία και ώρα χρησιμοποιώντας την ιδιότητα DateTime.Now
:
DateTime now = DateTime.Now;
Console.WriteLine(now); // Εκτυπώνει την τρέχουσα ημερομηνία και ώρα, π.χ. “2024-08-20 14:45:32”
1.2 Συγκεκριμένη ημερομηνία
Μπορείς να δημιουργήσεις ένα DateTime
με συγκεκριμένη ημερομηνία και ώρα, χρησιμοποιώντας τον κατάλληλο κατασκευαστή:
DateTime myDate = new DateTime(2023, 12, 25); // 25 Δεκεμβρίου 2023
Console.WriteLine(myDate); // Εκτυπώνει “2023-12-25 00:00:00”
Αν δεν δώσεις συγκεκριμένη ώρα, το DateTime
θα έχει προεπιλεγμένη ώρα τα μεσάνυχτα (00:00:00
).
Μπορείς επίσης να δώσεις συγκεκριμένη ώρα:
DateTime myDateTime = new DateTime(2023, 12, 25, 18, 30, 0); // 25 Δεκεμβρίου 2023, 18:30:00
Console.WriteLine(myDateTime); // Εκτυπώνει “2023-12-25 18:30:00”
2. Ιδιότητες του DateTime
Ο τύπος DateTime
έχει πολλές ιδιότητες που σου επιτρέπουν να πάρεις μέρη της ημερομηνίας ή της ώρας.
Year
: ΈτοςMonth
: ΜήναςDay
: ΗμέραHour
: ΏραMinute
: ΛεπτόSecond
: Δευτερόλεπτο
Παράδειγμα:
DateTime myDateTime = new DateTime(2023, 12, 25, 18, 30, 0);
int year = myDateTime.Year; // 2023
int month = myDateTime.Month; // 12
int day = myDateTime.Day; // 25
int hour = myDateTime.Hour; // 18
int minute = myDateTime.Minute; // 30
int second = myDateTime.Second; // 0
Console.WriteLine($”{day}/{month}/{year} – {hour}:{minute}:{second}”);
// Εκτυπώνει: “25/12/2023 – 18:30:0”
DateTime myDate = new DateTime(2023, 12, 25);
DateTime newDate = myDate.AddDays(5); // Προσθέτει 5 ημέρες, το νέο `DateTime` θα είναι 30 Δεκεμβρίου 2023
Console.WriteLine(newDate); // Εκτυπώνει “2023-12-30 00:00:00”
3. Προσθήκη ή αφαίρεση χρόνου
Μπορείς να προσθέσεις ή να αφαιρέσεις ημέρες, μήνες, χρόνια, ώρες, λεπτά, κ.λπ., από ένα αντικείμενο DateTime
.
3.1 Προσθήκη χρόνου
AddDays
: Προσθέτει ημέρεςAddMonths
: Προσθέτει μήνεςAddYears
: Προσθέτει χρόνιαAddHours
: Προσθέτει ώρες
Παράδειγμα:
DateTime myDate = new DateTime(2023, 12, 25);
DateTime newDate = myDate.AddDays(5); // Προσθέτει 5 ημέρες, το νέο DateTime
θα είναι 30 Δεκεμβρίου 2023
Console.WriteLine(newDate); // Εκτυπώνει “2023-12-30 00:00:00”
3.2 Αφαίρεση χρόνου
Παρόμοια, μπορείς να αφαιρέσεις χρόνο με αρνητικές τιμές.
Παράδειγμα:
DateTime newDate = myDate.AddDays(-5); // Αφαιρεί 5 ημέρες, το νέο DateTime
θα είναι 20 Δεκεμβρίου 2023
Console.WriteLine(newDate); // Εκτυπώνει “2023-12-20 00:00:00”
4. Σύγκριση ημερομηνιών
Μπορείς να συγκρίνεις δύο αντικείμενα DateTime
για να δεις αν είναι ίσα, αν το ένα είναι πριν ή μετά από το άλλο.
==
: Έλεγχος αν δύο ημερομηνίες είναι ίσες>
: Έλεγχος αν μια ημερομηνία είναι μεταγενέστερη<
: Έλεγχος αν μια ημερομηνία είναι προγενέστερη
Παράδειγμα:
DateTime date1 = new DateTime(2023, 12, 25);
DateTime date2 = new DateTime(2024, 12, 25);
bool areEqual = (date1 == date2); // false, γιατί οι ημερομηνίες δεν είναι ίδιες
bool isLater = (date2 > date1); // true, γιατί η date2 είναι μεταγενέστερη από την date1
5. Διαφορά μεταξύ δύο ημερομηνιών
Μπορείς να βρεις τη διαφορά μεταξύ δύο ημερομηνιών χρησιμοποιώντας τη μέθοδο Subtract
. Η διαφορά αυτή επιστρέφει ένα αντικείμενο TimeSpan
που σου δίνει πληροφορίες για το πόσες μέρες, ώρες, λεπτά κ.λπ., είναι η διαφορά.
Παράδειγμα:
DateTime date1 = new DateTime(2023, 12, 25);
DateTime date2 = new DateTime(2024, 01, 01);
TimeSpan difference = date2.Subtract(date1);
Console.WriteLine(difference.Days); // Εκτυπώνει “7”, δηλαδή η διαφορά είναι 7 μέρες
6. Μορφοποίηση ημερομηνιών
Μπορείς να μορφοποιήσεις ένα αντικείμενο DateTime
σε μορφή που θέλεις, χρησιμοποιώντας τη μέθοδο ToString
με μορφοποιημένα strings.
Παράδειγμα:
DateTime now = DateTime.Now;
string formattedDate = now.ToString(“dd/MM/yyyy”); // Μορφοποιημένο ως “ημέρα/μήνας/έτος”
Console.WriteLine(formattedDate); // Εκτυπώνει π.χ. “20/08/2024”
Συμπέρασμα
Ο τύπος DateTime
είναι πανίσχυρος για την εργασία με ημερομηνίες και ώρες. Σου επιτρέπει να:
- Δημιουργείς ημερομηνίες και ώρες,
- Παίρνεις μέρη αυτών (έτος, μήνας, ημέρα, κ.λπ.),
- Προσθέτεις ή αφαιρείς χρόνο,
- Συγκρίνεις ημερομηνίες,
- Βρίσκεις τη διαφορά μεταξύ ημερομηνιών,
- Μορφοποιείς τις ημερομηνίες όπως χρειάζεται.
Υπάρχουν μερικές ακόμη σημαντικές λεπτομέρειες και δυνατότητες του DateTime
στην C# που μπορεί να είναι χρήσιμες, ειδικά αν δουλεύεις με πολύπλοκα σενάρια ημερομηνιών και χρόνου. Ας δούμε μερικά από αυτά:
1. Kind (Τύπος χρονικής ζώνης)
Κάθε αντικείμενο DateTime
έχει μια ιδιότητα που λέγεται Kind
, η οποία δείχνει αν η ημερομηνία είναι:
Local
: Η τοπική ημερομηνία και ώρα του συστήματός σου.Utc
: Η ημερομηνία και ώρα με βάση την Παγκόσμια Συντονισμένη Ώρα (UTC).Unspecified
: Η χρονική ζώνη δεν έχει καθοριστεί.
Παράδειγμα:
DateTime localTime = DateTime.Now; // Τοπική ώρα
DateTime utcTime = DateTime.UtcNow; // UTC ώρα
Console.WriteLine(localTime.Kind); // Εκτυπώνει “Local”
Console.WriteLine(utcTime.Kind); // Εκτυπώνει “Utc”
2. Μετατροπή μεταξύ τοπικής ώρας και UTC
Μπορείς να μετατρέψεις την τοπική ώρα σε UTC και το αντίστροφο.
ToLocalTime
: Μετατρέπει την UTC ώρα στην τοπική ώρα του συστήματος.ToUniversalTime
: Μετατρέπει την τοπική ώρα σε UTC.
Παράδειγμα:
DateTime utcTime = DateTime.UtcNow;
DateTime localTime = utcTime.ToLocalTime(); // Μετατροπή σε τοπική ώρα
Console.WriteLine(localTime);
DateTime currentLocal = DateTime.Now;
DateTime utcConverted = currentLocal.ToUniversalTime(); // Μετατροπή σε UTC
Console.WriteLine(utcConverted);
3. Η σταθερά DateTime.MinValue
και DateTime.MaxValue
Αυτές οι σταθερές αντιπροσωπεύουν τις ελάχιστες και μέγιστες τιμές που μπορεί να πάρει ένα αντικείμενο DateTime
. Είναι χρήσιμες για αρχικοποίηση ή όταν θες να ελέγξεις αν μια τιμή είναι εντός αποδεκτού εύρους.
DateTime.MinValue
: Αντιστοιχεί στην 1η Ιανουαρίου του έτους 0001.DateTime.MaxValue
: Αντιστοιχεί στην 31η Δεκεμβρίου του έτους 9999.
Παράδειγμα:
DateTime minDate = DateTime.MinValue; // 1η Ιανουαρίου 0001
DateTime maxDate = DateTime.MaxValue; // 31η Δεκεμβρίου 9999
Console.WriteLine(minDate);
Console.WriteLine(maxDate);
4. DateTime.TryParse()
και DateTime.Parse()
Όταν παίρνεις μια ημερομηνία ως κείμενο (π.χ. από έναν χρήστη ή από αρχείο), μπορείς να τη μετατρέψεις σε αντικείμενο DateTime
με τις μεθόδους Parse
και TryParse
.
Parse()
: Μετατρέπει μια αλφαριθμητική συμβολοσειρά σεDateTime
. Αν η συμβολοσειρά δεν είναι έγκυρη, θα πετάξει μια εξαίρεση (FormatException
).
- Παράδειγμα:
string dateStr = “20/08/2024”;
DateTime date = DateTime.Parse(dateStr);
Console.WriteLine(date); // Εκτυπώνει 20 Αυγούστου 2024
TryParse()
: Προσπαθεί να μετατρέψει την αλφαριθμητική συμβολοσειρά σε DateTime
χωρίς να πετάξει εξαίρεση αν αποτύχει. Επιστρέφει true αν η μετατροπή είναι επιτυχής και false αν αποτύχει.
Παράδειγμα:
string dateStr = “invalid date”;
DateTime date;
bool success = DateTime.TryParse(dateStr, out date);
if (success)
{
Console.WriteLine(date); // Εκτυπώνει την ημερομηνία αν είναι έγκυρη
}
else
{
Console.WriteLine(“Invalid date format.”);
}
5. Εργασία με TimeSpan
Το TimeSpan
χρησιμοποιείται για να αναπαραστήσει διαφορές χρόνου (π.χ. 2 μέρες, 3 ώρες, κλπ.). Όταν κάνεις αφαίρεση μεταξύ δύο DateTime
αντικειμένων, παίρνεις ένα αντικείμενο TimeSpan
.
Παράδειγμα:
DateTime date1 = new DateTime(2024, 08, 20);
DateTime date2 = new DateTime(2024, 09, 01);
TimeSpan difference = date2 - date1;
Console.WriteLine(difference.TotalDays); // Εκτυπώνει "12", η διαφορά σε ημέρες
Μπορείς επίσης να χρησιμοποιήσεις το TimeSpan
για να προσθέσεις ή να αφαιρέσεις συγκεκριμένα διαστήματα από ένα DateTime
:
TimeSpan timeSpan = new TimeSpan(10, 0, 0, 0); // 10 ημέρες
DateTime newDate = DateTime.Now.Add(timeSpan); // Προσθέτει 10 ημέρες στην τρέχουσα ημερομηνία
Console.WriteLine(newDate);
6. DateTimeOffset
Ο τύπος DateTimeOffset
είναι παρόμοιος με το DateTime
, αλλά σου επιτρέπει να αποθηκεύεις και πληροφορίες για τη ζώνη ώρας. Αντί να βασίζεσαι μόνο στην τοπική ώρα ή την UTC, το DateTimeOffset
περιλαμβάνει και την απόκλιση από την UTC, κάτι που το κάνει πιο ακριβές όταν εργάζεσαι με παγκόσμιες εφαρμογές που διαχειρίζονται πολλαπλές ζώνες ώρας.
Παράδειγμα:
DateTimeOffset now = DateTimeOffset.Now;
Console.WriteLine(now); // Εκτυπώνει την ημερομηνία και την απόκλιση από UTC, π.χ. “2024-08-20 14:45:32 +03:00”
7. DateOnly
και TimeOnly
(C# 10 και μετά)
Στην C# 10, εισήχθησαν οι τύποι DateOnly
και TimeOnly
για πιο συγκεκριμένη χρήση όταν χρειάζεται να αποθηκεύσεις μόνο ημερομηνίες ή μόνο ώρες χωρίς την πλήρη λειτουργικότητα του DateTime
.
DateOnly
: Αποθηκεύει μόνο ημερομηνία (χωρίς ώρα).Παράδειγμα:csharp
DateOnly date = DateOnly.FromDateTime(DateTime.Now);
Console.WriteLine(date); // Εκτυπώνει μόνο την ημερομηνία, π.χ. “2024-08-20”
TimeOnly
: Αποθηκεύει μόνο ώρα (χωρίς ημερομηνία).
Παράδειγμα:
TimeOnly time = TimeOnly.FromDateTime(DateTime.Now);
Console.WriteLine(time); // Εκτυπώνει μόνο την ώρα, π.χ. “14:45:32”
Συμπεράσματα:
Ο DateTime
είναι πολύ ισχυρός, αλλά αν χρησιμοποιείς συχνά ζώνες ώρας ή παγκόσμια δεδομένα χρόνου, ίσως είναι καλύτερο να σκεφτείς τη χρήση του DateTimeOffset
. Οι νέοι τύποι DateOnly
και TimeOnly
σου δίνουν επίσης περισσότερες επιλογές για συγκεκριμένα σενάρια.
Ολοκληρωμένα παραδείγματα για μετατροπές από και προς DateTime
στην C#
Η κλάση DateTime
στην C# είναι πολύ χρήσιμη για την αναπαράσταση ημερομηνιών και ωρών. Παρακάτω θα δούμε παραδείγματα για μετατροπές από και προς διάφορους τύπους δεδομένων, όπως string, Unix Timestamp, TimeSpan, ticks και άλλους τύπους.
1. Μετατροπή από string σε DateTime
Μπορείς να μετατρέψεις ένα string που περιέχει μια ημερομηνία σε DateTime
χρησιμοποιώντας τη μέθοδο DateTime.Parse()
ή DateTime.TryParse()
για ασφαλή μετατροπή.
Παράδειγμα με DateTime.Parse()
using System;
class Program
{
static void Main()
{
// Ένα string που περιέχει μια ημερομηνία
string dateString = “2024-09-06”;
// Μετατροπή του string σε DateTime
DateTime date = DateTime.Parse(dateString);
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η ημερομηνία είναι: {date.ToShortDateString()}");
}
}
Παράδειγμα με DateTime.TryParse() για ασφαλή μετατροπή
using System;
class Program
{
static void Main()
{
// Ένα string που μπορεί να περιέχει μια ημερομηνία
string dateString = “2024-09-06”;
// Χρήση του DateTime.TryParse για ασφαλή μετατροπή
DateTime date;
bool success = DateTime.TryParse(dateString, out date);
if (success)
{
Console.WriteLine($"Η ημερομηνία είναι: {date.ToShortDateString()}");
}
else
{
Console.WriteLine("Η μετατροπή απέτυχε.");
}
}
}
2. Μετατροπή από DateTime
σε string
Μπορείς να μετατρέψεις ένα αντικείμενο DateTime
σε string χρησιμοποιώντας τη μέθοδο ToString()
. Μπορείς επίσης να ορίσεις συγκεκριμένη μορφή (format).
Παράδειγμα μετατροπής σε string με προεπιλεγμένη μορφή
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime date = DateTime.Now;
// Μετατροπή του DateTime σε string
string dateString = date.ToString();
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η ημερομηνία σε string είναι: {dateString}");
}
}
Παράδειγμα μετατροπής σε string με συγκεκριμένη μορφή
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime date = DateTime.Now;
// Μετατροπή του DateTime σε string με μορφή (π.χ. "dd/MM/yyyy HH:mm:ss")
string formattedDate = date.ToString("dd/MM/yyyy HH:mm:ss");
// Εμφάνιση της ημερομηνίας με συγκεκριμένη μορφή
Console.WriteLine($"Η ημερομηνία με μορφή είναι: {formattedDate}");
}
}
3. Μετατροπή από Unix Timestamp σε DateTime
Ο Unix Timestamp είναι η αναπαράσταση της ώρας ως αριθμός δευτερολέπτων που έχουν περάσει από την 1η Ιανουαρίου 1970 (γνωστή ως Epoch). Μπορείς να μετατρέψεις έναν Unix Timestamp σε DateTime
.
Παράδειγμα μετατροπής από Unix Timestamp σε DateTime
using System;
class Program
{
static void Main()
{
// Ένας Unix timestamp
long unixTimestamp = 1694006400; // Αντιστοιχεί στην 06/09/2024 00:00:00
// Μετατροπή του Unix timestamp σε DateTime
DateTime date = DateTimeOffset.FromUnixTimeSeconds(unixTimestamp).DateTime;
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η ημερομηνία από Unix Timestamp είναι: {date}");
}
}
4. Μετατροπή από DateTime
σε Unix Timestamp
Για να μετατρέψεις ένα αντικείμενο DateTime
σε Unix Timestamp, μπορείς να υπολογίσεις τα δευτερόλεπτα που έχουν περάσει από την 1η Ιανουαρίου 1970.
Παράδειγμα μετατροπής από DateTime
σε Unix Timestamp
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime date = new DateTime(2024, 9, 6, 0, 0, 0, DateTimeKind.Utc);
// Μετατροπή του DateTime σε Unix timestamp
long unixTimestamp = ((DateTimeOffset)date).ToUnixTimeSeconds();
// Εμφάνιση του Unix timestamp
Console.WriteLine($"Ο Unix Timestamp είναι: {unixTimestamp}");
}
}
5. Μετατροπή από ticks σε DateTime
Τα ticks είναι η εσωτερική αναπαράσταση του DateTime
στην C#. Κάθε tick αντιστοιχεί σε 100 νανοδευτερόλεπτα. Μπορείς να μετατρέψεις ticks σε DateTime
και αντίστροφα.
Παράδειγμα μετατροπής από ticks σε DateTime
using System;
class Program
{
static void Main()
{
// Ένας αριθμός ticks
long ticks = 638297280000000000;
// Μετατροπή των ticks σε DateTime
DateTime date = new DateTime(ticks);
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η ημερομηνία από ticks είναι: {date}");
}
}
6. Μετατροπή από DateTime
σε ticks
Παράδειγμα μετατροπής από DateTime
σε ticks
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime date = DateTime.Now;
// Μετατροπή του DateTime σε ticks
long ticks = date.Ticks;
// Εμφάνιση των ticks
Console.WriteLine($"Τα ticks είναι: {ticks}");
}
}
- Μετατροπή από TimeSpan σε DateTime
Το TimeSpan αντιπροσωπεύει ένα χρονικό διάστημα, ενώ το DateTime αντιπροσωπεύει συγκεκριμένη ημερομηνία και ώρα. Αν θέλεις να προσθέσεις ένα TimeSpan σε ένα DateTime, μπορείς να το κάνεις εύκολα.
Παράδειγμα προσθήκης TimeSpan σε DateTime
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime αρχικήΗμερομηνία = DateTime.Now;
// Ένα TimeSpan που αντιπροσωπεύει 1 ημέρα και 2 ώρες
TimeSpan χρονικόΔιάστημα = new TimeSpan(1, 2, 0, 0);
// Προσθέτουμε το TimeSpan στο DateTime
DateTime νέαΗμερομηνία = αρχικήΗμερομηνία.Add(χρονικόΔιάστημα);
// Εμφάνιση της νέας ημερομηνίας
Console.WriteLine($"Η νέα ημερομηνία είναι: {νέαΗμερομηνία}");
}
}
- Μετατροπή από DateTime σε TimeSpan
Μπορείς να υπολογίσεις τη διαφορά μεταξύ δύο DateTime αντικειμένων ως TimeSpan.
Παράδειγμα διαφοράς μεταξύ δύο ημερομηνιών
using System;
class Program
{
static void Main()
{
// Δύο αντικείμενα DateTime
DateTime startDate = new DateTime(2024, 1, 1);
DateTime endDate = new DateTime(2024, 9, 6);
// Υπολογισμός της διαφοράς
TimeSpan διαφορά = endDate - startDate;
// Εμφάνιση της διαφοράς σε ημέρες
Console.WriteLine($"Η διαφορά είναι: {διαφορά.Days} ημέρες");
}
}
- Μετατροπή από String σε DateTime
Παράδειγμα 1: Με χρήση της μεθόδου DateTime.Parse()
using System;
class Program
{
static void Main()
{
// Ένα string που περιέχει μια ημερομηνία
string dateString = “2024-09-06”;
// Μετατροπή του string σε DateTime
DateTime date = DateTime.Parse(dateString);
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η μετατροπή από string σε DateTime είναι: {date}");
}
}
Παράδειγμα 2: Με χρήση της μεθόδου DateTime.TryParse() (ασφαλής μετατροπή)
using System;
class Program
{
static void Main()
{
// Ένα string που μπορεί να περιέχει μια ημερομηνία
string dateString = “2024-09-06”;
// Χρήση του DateTime.TryParse για ασφαλή μετατροπή
DateTime date;
bool success = DateTime.TryParse(dateString, out date);
if (success)
{
Console.WriteLine($"Η μετατροπή από string σε DateTime είναι: {date}");
}
else
{
Console.WriteLine("Η μετατροπή απέτυχε.");
}
}
}
- Μετατροπή από int σε DateTime
Στην περίπτωση της μετατροπής από int σε DateTime, συνήθως χρησιμοποιούμε το Unix Timestamp, το οποίο είναι ο αριθμός δευτερολέπτων από την 1η Ιανουαρίου 1970.
Παράδειγμα: Μετατροπή από Unix Timestamp (int) σε DateTime
using System;
class Program
{
static void Main()
{
// Ένας Unix timestamp (int)
int unixTimestamp = 1694006400; // 06/09/2024 00:00:00 UTC
// Μετατροπή του Unix timestamp σε DateTime
DateTime date = DateTimeOffset.FromUnixTimeSeconds(unixTimestamp).DateTime;
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η μετατροπή από int (Unix Timestamp) σε DateTime είναι: {date}");
}
}
- Μετατροπή από DateTime σε String
Παράδειγμα 1: Με προεπιλεγμένη μορφή
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime date = DateTime.Now;
// Μετατροπή του DateTime σε string
string dateString = date.ToString();
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η μετατροπή από DateTime σε string είναι: {dateString}");
}
}
Παράδειγμα 2: Με συγκεκριμένη μορφή (format)
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime date = DateTime.Now;
// Μετατροπή του DateTime σε string με μορφή (π.χ. "dd/MM/yyyy HH:mm:ss")
string formattedDate = date.ToString("dd/MM/yyyy HH:mm:ss");
// Εμφάνιση της ημερομηνίας
Console.WriteLine($"Η μετατροπή από DateTime σε string με μορφή είναι: {formattedDate}");
}
}
- Μετατροπή από DateTime σε int
Συνήθως, η μετατροπή από DateTime σε int γίνεται σε Unix Timestamp, δηλαδή ο αριθμός των δευτερολέπτων από την 1η Ιανουαρίου 1970.
Παράδειγμα: Μετατροπή από DateTime σε Unix Timestamp (int)
using System;
class Program
{
static void Main()
{
// Ένα αντικείμενο DateTime
DateTime date = new DateTime(2024, 9, 6, 0, 0, 0, DateTimeKind.Utc);
// Μετατροπή του DateTime σε Unix timestamp (int)
long unixTimestamp = ((DateTimeOffset)date).ToUnixTimeSeconds();
// Εμφάνιση του Unix timestamp
Console.WriteLine($"Η μετατροπή από DateTime σε int (Unix Timestamp) είναι: {unixTimestamp}");
}
}
Η κλάση DateTime
στην C# διαθέτει πολλές χρήσιμες ιδιότητες για την εργασία με ημερομηνίες και ώρες. Παρακάτω θα δεις ολοκληρωμένα παραδείγματα με τις πιο σημαντικές ιδιότητες της DateTime
.
1. Date
: Παίρνει την ημερομηνία χωρίς την ώρα.
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε μόνο την ημερομηνία χωρίς την ώρα
DateTime onlyDate = now.Date;
Console.WriteLine($"Η σημερινή ημερομηνία είναι: {onlyDate.ToShortDateString()}");
}
//Η σημερινή ημερομηνία είναι: 09/06/202
}
2. Day
, Month
, Year
: Παίρνει την ημέρα, τον μήνα και το έτος.
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε την ημέρα, τον μήνα και το έτος
int day = now.Day;
int month = now.Month;
int year = now.Year;
Console.WriteLine($"Σήμερα είναι: {day}/{month}/{year}");
}
} //Σήμερα είναι: 6/9/2024
3. Hour
, Minute
, Second
: Παίρνει την ώρα, τα λεπτά και τα δευτερόλεπτα.
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε την ώρα, τα λεπτά και τα δευτερόλεπτα
int hour = now.Hour;
int minute = now.Minute;
int second = now.Second;
Console.WriteLine($"Η ώρα είναι: {hour}:{minute}:{second}");
}
}// Η ώρα είναι: 14:30:45
4. DayOfWeek
: Παίρνει την ημέρα της εβδομάδας.
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε την ημέρα της εβδομάδας
DayOfWeek dayOfWeek = now.DayOfWeek;
Console.WriteLine($"Σήμερα είναι: {dayOfWeek}");
}
}//Σήμερα είναι: Saturday
5. DayOfYear
: Παίρνει την ημέρα του έτους (1 – 365 ή 366 για δίσεκτα έτη).
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε την ημέρα του έτους
int dayOfYear = now.DayOfYear;
Console.WriteLine($"Σήμερα είναι η {dayOfYear}η ημέρα του έτους.");
}
}//Σήμερα είναι η 250η ημέρα του έτους.
- TimeOfDay: Παίρνει την ώρα της ημέρας ως TimeSpan.
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε την ώρα της ημέρας ως TimeSpan
TimeSpan timeOfDay = now.TimeOfDay;
Console.WriteLine($"Η ώρα της ημέρας είναι: {timeOfDay}");
}
}
Αποτέλεσμα:
Η ώρα της ημέρας είναι: 14:30:45.1234567
- Ticks: Παίρνει τον αριθμό των ticks (100 νανοδευτερόλεπτα) από την 1η Ιανουαρίου 0001.
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε τον αριθμό των ticks
long ticks = now.Ticks;
Console.WriteLine($"Ο αριθμός των ticks είναι: {ticks}");
}
}
Αποτέλεσμα:
Ο αριθμός των ticks είναι: 638297280451234567
- Kind: Παίρνει τον τύπο του DateTime (Local, Utc, ή Unspecified).
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// Παίρνουμε τον τύπο του DateTime (Local ή Utc)
DateTimeKind kind = now.Kind;
Console.WriteLine($"Ο τύπος του DateTime είναι: {kind}");
}
}
Αποτέλεσμα:
Ο τύπος του DateTime είναι: Local
- UtcNow: Παίρνει την τρέχουσα ημερομηνία και ώρα σε UTC (Coordinated Universal Time).
using System;
class Program
{
static void Main()
{
// Παίρνουμε την τρέχουσα ημερομηνία και ώρα σε UTC
DateTime utcNow = DateTime.UtcNow;
Console.WriteLine($"Η τρέχουσα ώρα UTC είναι: {utcNow}");
}
}
Αποτέλεσμα:
Η τρέχουσα ώρα UTC είναι: 06/09/2024 12:30:45
- Now: Παίρνει την τρέχουσα ημερομηνία και ώρα σε τοπική ώρα (Local).
using System;
class Program
{
static void Main()
{
// Παίρνουμε την τρέχουσα ημερομηνία και ώρα σε τοπική ώρα
DateTime now = DateTime.Now;
Console.WriteLine($"Η τρέχουσα τοπική ώρα είναι: {now}");
}
}
Αποτέλεσμα:
Η τρέχουσα τοπική ώρα είναι: 06/09/2024 14:30:45
- IsLeapYear(): Ελέγχει αν το έτος είναι δίσεκτο.
using System;
class Program
{
static void Main()
{
// Ελέγχουμε αν το 2024 είναι δίσεκτο έτος
bool isLeapYear = DateTime.IsLeapYear(2024);
Console.WriteLine($"Το 2024 είναι δίσεκτο έτος: {isLeapYear}");
}
}
Αποτέλεσμα:
yaml
Το 2024 είναι δίσεκτο έτος: True
Συμπέρασμα:
Η κλάση DateTime διαθέτει πολλές ιδιότητες που επιτρέπουν τη λήψη πληροφοριών για την ημερομηνία και την ώρα.
Μπορείς να πάρεις την ημέρα, μήνα, έτος, την ώρα, την ημέρα της εβδομάδας, την ημέρα του έτους, και πολλά άλλα.
Η κλάση DateTime είναι πολύ ισχυρή και βοηθάει στην αποτελεσματική διαχείριση των ημερομηνιών και ωρών στην C#.