Guy recommends :
Free Permissions
Analyzer Tool

Solarwinds Free Download of Permissions Analyzer

 

View the effective permissions for a folder or shared drive. Free download try it now!


PowerShell Get-Date and DateTime

Windows PowerShell Get-Date Format

Manipulating dates is always tricky.  However, PowerShell's Get-Date cmdlet does a wonderful job of interpreting the different international formats for day / month / year.  As a result, what ever your computer's country locale, it will be easy to calculate how many days there are to Christmas.

Topics for Windows PowerShell Get-Date and DateTime

 ♣

Introduction to the Get-Date Cmdlet

Normally I like to use a learning progression where we begin with Get-Help and examine a cmdlet's parameters, next we look at the properties by piping the cmdlet into Get-Member.  Finally, we use the knowledge gained to create PowerShell script to tackle a real-life task.

On this page I am making a change to my usual running order.  Firstly I want to tackle the challenge presented by a real-life task first.  Secondly, I will encourage you to research more methods and properties for the cmdlet Get-Date.  The result is that you have the skills to undertake other DateTime projects.

How Many Days to Christmas? (or Thanksgiving)

Our challenge is simple enough, to knock-up a simple script which will tell us how many days there are until Christmas, Thanksgiving, or any other date you care to place in a text string.

Here in the UK, our operating systems show dates in the format: dd mmmm yyyy.  Whereas in the United States your locale is displayed as mmmm dd yyyy.  Consequently, I was amazed that PowerShell could convert both "25 December 2013" and "November 28 2013" into date values that it could understand and perform calculations.

Example 1 - Calculate Days Until Christmas Using Lots of Variables

In example one I have used several variables that are not strictly necessary, I just wanted to show my thought process in creating this very simple PowerShell script.

# PowerShell DateTime Script to display days until Christmas
$DecDate = "25 December 2013"
$NovDate ="November 28 2013"
$Thanksgiving = [system.datetime]$NovDate
$Christmas = [system.datetime]$DecDate
$Today = Get-Date
$Xmas = ($Christmas.DayOfYear - $Today.DayOfYear)
$Thanks = ($Thanksgiving.DayOfYear - $Today.DayOfYear)
"There are " + $Xmas + " days until " + $DecDate
"There are " + $Thanks + " days until " + $NovDate

Note 1:  You may wish to examine the values for $DecDate and $NovDate, then change the sequence of day month to suit your locale.

Note 2:  It's interesting to see how PowerShell leverages .Net Framework, for example, it employs System.DateTime to convert a text string to a date format.

Note 3:  I keep marvelling how PowerShell can understand both formats: dd mmmm yyyy, and mmmm dd yyyy.

Guy Recommends:  A Free Trial of the Network Performance Monitor (NPM)Review of Orion NPM v10

SolarWinds' Network Performance Monitor will help you discover what's happening on your network.  This utility will also guide you through troubleshooting; the dashboard will indicate whether the root cause is a broken link, faulty equipment or resource overload.

What I like best is the way NPM suggests solutions to network problems.  Its also has the ability to monitor the health of individual VMware virtual machines.  If you are interested in troubleshooting, and creating network maps, then I recommend that you try NPM now.

Download a free trial of Solarwinds' Network Performance Monitor

Example 2 - Production Version of 'How Many Days to Christmas'

# PowerShell DateTime Example
"There are " + (([system.datetime]"25 December 2013").DayOfYear - `
(Get-Date).DayOfYear) + " days until " + "24 December 2013"

Note 4:  This is just one long command.  Observe how the backtick (`) enables the command to overspill onto the second line.

Note 5:  This command needed an extra set of round brackets to surround [system.datetime]"25 December 2013"

Note 6:  It's interesting to see how PowerShell interprets a mixture of "text strings" and date calculations.  As with types of bracket, you need the correct type of "double" speech marks here.

Further Research on PowerShell's Get-Date

I'm hoping that the simple example above will give you ideas for date scripts, which will be useful in your PowerShell projects.  If so, then it's well worth examining Get-Date's properties, and in particular its methods.

a) Get-Date Methods and Properties

# Research PowerShell Get-Date Properties
Get-Date | Get-Member

Note 7:  Normally it's a cmdlet's properties that I am most interested in, but with Get-Date it's the methods that intrigue me, for example .AddDays() and .IsDaylightSavingTime().

b) AddDays Method

The purpose of this script is to list all the System Error messages from the last 8 days. Incidentally, it's amazing how often we use this method with a negative number to go back in time.

# PowerShell Get-Date example
Clear-Host
$Log8d = @{
Logname = 'System'
EntryType = 'Error'
After = (Get-Date).AddDays(-8)
}

Get-EventLog @Log8d

Note 8: See more on this @{.. technique of PowerShell 'Splatting'

c) Get-Date Parameters

# Research PowerShell's Get-Date Parameters
Clear-Host
Get-Help Get-Date -full

Thanks to PowerShell's help, I learned about the format -Uformat.

d) Formatting Get-Date

Challenge:  UK readers may appreciate employing this -Uformat parameter to rearrange days and months:

# PowerShell Get-Date Format Example
Clear-Host
$Now = Get-Date -Uformat "%A, %d:%m:%Y"
Write-Host "Today in the UK is $Now enjoy your day!"

SolarWinds Firewall Browser Solarwinds Free Firewall Browser

Here is an utility where you can review firewall settings such as access control lists (ACL), or troubleshoot problems with network address translation (NAT).

Other reasons to download this SolarWinds Firewall Browser include managing requests to change your firewall settings, testing firewall rules before you go live, and querying settings with the browser's powerful search options.

Guy recommends that you download a copy of the SolarWinds free Firewall Browser.

Bonus Technique - DateTime and ParseExact

Once again, here is PowerShell working with the .Net Framework class DateTime.  ParseExact is a neat method which can convert a text string into its DateTime equivalent.

# ParseExact Change date and time with custom specifier.
Clear-Host
$DateString = "Sun 05 Aug 2012 12:30 AM -06:00"
$Format = "ddd dd MMM yyyy h:mm tt zzz"
$Translate = [DateTime]::ParseExact($DateString, $Format, $Provider)
Write-Host "$DateString converts to $($Translate.ToString())."

Get-Date CSV Format

Here is an example which employs another PowerShell cmdlet called ConvertTo-Csv to control the date format.

Clear-Host
$DateCsv = Get-Date
ConvertTo-Csv -Inputobject $DateCsv -NoTypeinformation

Note 9: You could change the separator from a comma to a semi-colon by apending this parameter: -Delimiter ";"

See more on ConvertTo-Csv »

Summary of PowerShell Get-Time and DateTime

Scripting dates is always tricky.  In these examples we can see how PowerShell leverages .Net Framework to convert strings into PowerShell's DateTime values, which in turn, can be use for calculations.

If you like this page then please share it with your friends

 


See more PowerShell examples for syntax advice

PowerShell Tutorials   • Syntax   • Get-Verb   • PowerShell Nouns   • Get-Credential

PowerShell -as   • Comparison operators  • Conditional operators   • Real-time Bandwidth Monitor

Get-Date  • Quotes   • Windows PowerShell   • PowerShell Version Check   • Get-Member

Please email me if you have a better example script. Also please report any factual mistakes, grammatical errors or broken links, I will be happy to correct the fault.

Download my ebook:Getting Started with PowerShell
Getting Started with PowerShell - only $9.25

You get 36 topics organized into these 3 sections:
   1) Getting Started
   2) Real-life tasks
   3) Examples of Syntax.

In addition to the ebook, you get a PDF version of this  Introduction to PowerShell ebook  It runs to 120 pages of A4.

 *


Custom Search

Site Home

Guy Recommends: WMI Monitor for PowershellSolarwinds WMI Monitor

Windows Management Instrumentation (WMI) is most useful for PowerShell scripting.

SolarWinds have produced this Free WMI Monitor to take the guess work out of which WMI counters to use for applications like Microsoft Active Directory, SQL or Exchange Server.

Download your free copy of WMI Monitor

Author: Guy Thomas Copyright © 1999-2013 Computer Performance LTD All rights reserved.

Please report a broken link, or an error to: