Dates, Times and Math

10.1 Date and Time

Dim now = Date.Now                          ' or DateTime.Now
Dim today = Date.Today
Dim utc = Date.UtcNow
Dim birthday = New Date(1995, 6, 15)
Dim parsed = Date.Parse("2025-10-24")
Dim ok = Date.TryParseExact("24/10/2025", "dd/MM/yyyy", Globalization.CultureInfo.InvariantCulture,
                             Globalization.DateTimeStyles.None, parsed)

Console.WriteLine(now.Year & " " & now.Month & " " & now.Day & " " & now.DayOfWeek.ToString())
Console.WriteLine(now.ToString("dddd, dd MMMM yyyy HH:mm:ss"))
Console.WriteLine(now.ToShortDateString() & " " & now.ToLongTimeString())

Dim nextWeek = today.AddDays(7)
Dim lastMonth = today.AddMonths(-1)
Dim age As TimeSpan = today - birthday
Console.WriteLine(age.TotalDays \ 365)
Dim duration = TimeSpan.FromMinutes(90)
Console.WriteLine(duration.Hours & "h " & duration.Minutes & "m")
Console.WriteLine(Date.DaysInMonth(2024, 2), Date.IsLeapYear(2024))

' VB legacy date functions
Console.WriteLine(DateAdd(DateInterval.Day, 10, today))
Console.WriteLine(DateDiff(DateInterval.Day, birthday, today))
Console.WriteLine(DatePart(DateInterval.Quarter, today), MonthName(10), WeekdayName(1))

' Modern types (.NET 6+)
Dim d As DateOnly = DateOnly.Fr
…

10.2 Math

Math.Abs(-5) : Math.Sqrt(16) : Math.Pow(2, 10) : Math.Max(3, 7) : Math.Min(3, 7)
Math.Round(2.567, 2)                          ' 2.57
Math.Round(2.5)                               ' 2 (banker's rounding)
Math.Round(2.5, MidpointRounding.AwayFromZero) ' 3
Math.Floor(3.7) : Math.Ceiling(3.2) : Math.Truncate(-3.7)
Math.Sin(Math.PI / 2) : Math.Log(Math.E) : Math.Log10(100)
Math.Clamp(15, 0, 10)
Dim rnd As New Random()
Dim dice = rnd.Next(1, 7)                     ' 1..6
Dim pct = rnd.NextDouble()
Dim shared1 = Random.Shared.Next(100)         ' .NET 6+
Dim big = System.Numerics.BigInteger.Pow(2, 200)