Memoru

System Engineering and Programming and IT

1909-powershell-datetime

1909-powershell-datetime

overview

Image from Gyazo

jupyter notebook

Usage

basic

In [23]:
Get-Date
02 September 2019 20:58:03


In [24]:
Get-Date -format "yy/MM/dd hh:mm"
19/09/02 08:58
In [25]:
Get-Date -format "yyMMdd_hhmm"
190902_0858

Get-Help

In [26]:
Get-Help Get-Date
NAME
    Get-Date
    
SYNOPSIS
    Gets the current date and time.
    
    
SYNTAX
    Get-Date [[-Date] <DateTime>] [-Day <Int32>] [-DisplayHint {Date | Time | DateTime}] [-Format <String>] [-Hour 
    <Int32>] [-Millisecond <Int32>] [-Minute <Int32>] [-Month <Int32>] [-Second <Int32>] [-Year <Int32>] 
    [<CommonParameters>]
    
    Get-Date [[-Date] <DateTime>] [-Day <Int32>] [-DisplayHint {Date | Time | DateTime}] [-Hour <Int32>] [-Millisecond 
    <Int32>] [-Minute <Int32>] [-Month <Int32>] [-Second <Int32>] [-UFormat <String>] [-Year <Int32>] 
    [<CommonParameters>]
    
    
DESCRIPTION
    The Get-Date cmdlet gets a DateTime object that represents the current date or a date that you specify. It can 
    format the date and time in several Windows and UNIX formats. You can use Get-Date to generate a date or time 
    character string, and then send the string to other cmdlets or programs.
    

RELATED LINKS
    Online Version: http://go.microsoft.com/fwlink/?LinkId=821781
    New-TimeSpan 
    Set-Date 

REMARKS
    To see the examples, type: "get-help Get-Date -examples".
    For more information, type: "get-help Get-Date -detailed".
    For technical information, type: "get-help Get-Date -full".
    For online help, type: "get-help Get-Date -online"


In [27]:
Get-Help Get-Date -online

Get-Command and Get-Alias

In [29]:
Get-Command -Noun Date
CommandType     Name                                               Version    Source                                   
-----------     ----                                               -------    ------                                   
Cmdlet          Get-Date                                           3.1.0.0    Microsoft.PowerShell.Utility             
Cmdlet          Set-Date                                           3.1.0.0    Microsoft.PowerShell.Utility             


Identification of Type

In [30]:
(Get-Date) -is [datetime]
True
In [32]:
(Get-Date).GetType().Fullname
System.DateTime

Get-Member

In [33]:
(Get-Date) | Get-Member -MemberType Property | Format-Table Name, Definition
Name        Definition                       
----        ----------                       
Date        datetime Date {get;}             
Day         int Day {get;}                   
DayOfWeek   System.DayOfWeek DayOfWeek {get;}
DayOfYear   int DayOfYear {get;}             
Hour        int Hour {get;}                  
Kind        System.DateTimeKind Kind {get;}  
Millisecond int Millisecond {get;}           
Minute      int Minute {get;}                
Month       int Month {get;}                 
Second      int Second {get;}                
Ticks       long Ticks {get;}                
TimeOfDay   timespan TimeOfDay {get;}        
Year        int Year {get;}                  


In [34]:
(Get-Date) | Get-Member -MemberType Method | Format-Table Name, Definition
Name                 Definition                                                                                        
----                 ----------                                                                                        
Add                  datetime Add(timespan value)                                                                      
AddDays              datetime AddDays(double value)                                                                    
AddHours             datetime AddHours(double value)                                                                   
AddMilliseconds      datetime AddMilliseconds(double value)                                                            
AddMinutes           datetime AddMinutes(double value)                                                                 
AddMonths            datetime AddMonths(int months)                                                                    
AddSeconds           datetime AddSeconds(double value)                                                                 
AddTicks             datetime AddTicks(long value)                                                                     
AddYears             datetime AddYears(int value)                                                                      
CompareTo            int CompareTo(System.Object value), int CompareTo(datetime value), int IComparable.CompareTo(Sy...
Equals               bool Equals(System.Object value), bool Equals(datetime value), bool IEquatable[datetime].Equals...
GetDateTimeFormats   string[] GetDateTimeFormats(), string[] GetDateTimeFormats(System.IFormatProvider provider), st...
GetHashCode          int GetHashCode()                                                                                 
GetObjectData        void ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Ru...
GetType              type GetType()                                                                                    
GetTypeCode          System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()                         
IsDaylightSavingTime bool IsDaylightSavingTime()                                                                       
Subtract             timespan Subtract(datetime value), datetime Subtract(timespan value)                              
ToBinary             long ToBinary()                                                                                   
ToBoolean            bool IConvertible.ToBoolean(System.IFormatProvider provider)                                      
ToByte               byte IConvertible.ToByte(System.IFormatProvider provider)                                         
ToChar               char IConvertible.ToChar(System.IFormatProvider provider)                                         
ToDateTime           datetime IConvertible.ToDateTime(System.IFormatProvider provider)                                 
ToDecimal            decimal IConvertible.ToDecimal(System.IFormatProvider provider)                                   
ToDouble             double IConvertible.ToDouble(System.IFormatProvider provider)                                     
ToFileTime           long ToFileTime()                                                                                 
ToFileTimeUtc        long ToFileTimeUtc()                                                                              
ToInt16              int16 IConvertible.ToInt16(System.IFormatProvider provider)                                       
ToInt32              int IConvertible.ToInt32(System.IFormatProvider provider)                                         
ToInt64              long IConvertible.ToInt64(System.IFormatProvider provider)                                        
ToLocalTime          datetime ToLocalTime()                                                                            
ToLongDateString     string ToLongDateString()                                                                         
ToLongTimeString     string ToLongTimeString()                                                                         
ToOADate             double ToOADate()                                                                                 
ToSByte              sbyte IConvertible.ToSByte(System.IFormatProvider provider)                                       
ToShortDateString    string ToShortDateString()                                                                        
ToShortTimeString    string ToShortTimeString()                                                                        
ToSingle             float IConvertible.ToSingle(System.IFormatProvider provider)                                      
ToString             string ToString(), string ToString(string format), string ToString(System.IFormatProvider provi...
ToType               System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)           
ToUInt16             uint16 IConvertible.ToUInt16(System.IFormatProvider provider)                                     
ToUInt32             uint32 IConvertible.ToUInt32(System.IFormatProvider provider)                                     
ToUInt64             uint64 IConvertible.ToUInt64(System.IFormatProvider provider)                                     
ToUniversalTime      datetime ToUniversalTime()                                                                        


Methods

calculate

In [37]:
$first_off_dtm = Get-Date
$first_off_dtm_str = Get-Date (Get-Date $first_off_dtm -f 'yyyy/MM/dd') -f 'yyyy/MM/dd HH:mm'
$last_on_dtm_str = Get-Date ((Get-Date $first_off_dtm_str).AddDays(1).AddMinutes(-1)) -f 'yyyy/MM/dd HH:mm'
$first_off_dtm_str
$last_on_dtm_str
$first_off_dtm = Get-Date
$first_off_dtm_str = Get-Date (Get-Date $first_off_dtm -f 'yyyy/MM/dd') -f 'yyyy/MM/dd HH:mm'
$last_on_dtm_str = Get-Date ((Get-Date $first_off_dtm_str).AddDays(1).AddMinutes(-1)) -f 'yyyy/MM/dd HH:mm'
$first_off_dtm_str
2019/09/02 00:00
$last_on_dtm_str
2019/09/02 23:59

date -> str (formatting)

In [39]:
@("d","D","f","F","g","G","M","O","R","s","t","T","u","U","Y") | 
    foreach {$date=Get-Date -F $_ ;"$_, $date"}
d, 02/09/2019
D, 02 September 2019
f, 02 September 2019 21:07
F, 02 September 2019 21:07:01
g, 02/09/2019 21:07
G, 02/09/2019 21:07:01
M, 2 September
O, 2019-09-02T21:07:01.9259624+09:00
R, Mon, 02 Sep 2019 21:07:01 GMT
s, 2019-09-02T21:07:01
t, 21:07
T, 21:07:01
u, 2019-09-02 21:07:01Z
U, 02 September 2019 12:07:01
Y, September 2019
In [41]:
Get-Date -F 'yyyy/MM/dd HH:mm:ss.ffffff'
2019/09/02 21:07:24.807954
In [43]:
(Get-Date -F O).Replace('-','').Replace('T','_').Replace(':','').Replace('+','_GMT+')
20190902_210741.5350748_GMT+0900

str -> datetime

In [45]:
Get-Date '2019/09/01'
01 September 2019 00:00:00


In [47]:
Get-Date '2019/08/28 22:12'
28 August 2019 22:12:00


serialization

In [52]:
Get-Date | Export-Clixml date.clixml

In [54]:
cat date.clixml
<Objs Version="1.1.0.1" xmlns="">http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <DT>2019-09-02T21:11:13.7820526+09:00</DT>
    <MS>
      <Obj N="DisplayHint" RefId="1">
        <TN RefId="0">
          <T>Microsoft.PowerShell.Commands.DisplayHintType</T>
          <T>System.Enum</T>
          <T>System.ValueType</T>
          <T>System.Object</T>
        </TN>
        <ToString>DateTime</ToString>
        <I32>2</I32>
      </Obj>
    </MS>
  </Obj>
</Objs>
In [56]:
Import-Clixml date.clixml | set -Name dtm_cli

In [58]:
02 September 2019 21:11:13


In [60]:
$dtm_cli.GetType().Fullname
System.DateTime

timespan

In [62]:
Get-Command -Noun Time*
CommandType     Name                                               Version    Source                                   
-----------     ----                                               -------    ------                                   
Cmdlet          Get-TimeZone                                       3.1.0.0    Microsoft.PowerShell.Management          
Cmdlet          New-TimeSpan                                       3.1.0.0    Microsoft.PowerShell.Utility             
Cmdlet          Set-TimeZone                                       3.1.0.0    Microsoft.PowerShell.Management          


In [64]:
Get-Help New-Timespan
NAME
    New-TimeSpan
    
SYNOPSIS
    Creates a TimeSpan object.
    
    
SYNTAX
    New-TimeSpan [-Days <Int32>] [-Hours <Int32>] [-Minutes <Int32>] [-Seconds <Int32>] [<CommonParameters>]
    
    New-TimeSpan [[-Start] <DateTime>] [[-End] <DateTime>] [<CommonParameters>]
    
    
DESCRIPTION
    The New-TimeSpan cmdlet creates a TimeSpan object that represents a time interval. You can use a TimeSpan object 
    to add or subtract time from DateTime objects.
    
    Without parameters, a New-Timespan command returns a timespan object that represents a time interval of zero.
    

RELATED LINKS
    Online Version: http://go.microsoft.com/fwlink/?LinkId=821837
    Get-Date 
    Set-Date 

REMARKS
    To see the examples, type: "get-help New-TimeSpan -examples".
    For more information, type: "get-help New-TimeSpan -detailed".
    For technical information, type: "get-help New-TimeSpan -full".
    For online help, type: "get-help New-TimeSpan -online"


In [65]:
Get-Help New-Timespan -online
NAME
    New-TimeSpan
    
SYNOPSIS
    Creates a TimeSpan object.
    
    
SYNTAX
    New-TimeSpan [-Days <Int32>] [-Hours <Int32>] [-Minutes <Int32>] [-Seconds <Int32>] [<CommonParameters>]
    
    New-TimeSpan [[-Start] <DateTime>] [[-End] <DateTime>] [<CommonParameters>]
    
    
DESCRIPTION
    The New-TimeSpan cmdlet creates a TimeSpan object that represents a time interval. You can use a TimeSpan object 
    to add or subtract time from DateTime objects.
    
    Without parameters, a New-Timespan command returns a timespan object that represents a time interval of zero.
    

RELATED LINKS
    Online Version: http://go.microsoft.com/fwlink/?LinkId=821837
    Get-Date 
    Set-Date 

REMARKS
    To see the examples, type: "get-help New-TimeSpan -examples".
    For more information, type: "get-help New-TimeSpan -detailed".
    For technical information, type: "get-help New-TimeSpan -full".
    For online help, type: "get-help New-TimeSpan -online"


Get-Member

In [66]:
$timespn = New-Timespan

In [74]:
$timespn | Get-Member -MemberType Property | ft Name, Definition
Name              Definition                     
----              ----------                     
Days              int Days {get;}                
Hours             int Hours {get;}               
Milliseconds      int Milliseconds {get;}        
Minutes           int Minutes {get;}             
Seconds           int Seconds {get;}             
Ticks             long Ticks {get;}              
TotalDays         double TotalDays {get;}        
TotalHours        double TotalHours {get;}       
TotalMilliseconds double TotalMilliseconds {get;}
TotalMinutes      double TotalMinutes {get;}     
TotalSeconds      double TotalSeconds {get;}     


In [76]:
$timespn | Get-Member -MemberType Method | ft Name, Definition
Name        Definition                                                                                                 
----        ----------                                                                                                 
Add         timespan Add(timespan ts)                                                                                  
CompareTo   int CompareTo(System.Object value), int CompareTo(timespan value), int IComparable.CompareTo(System.Obje...
Duration    timespan Duration()                                                                                        
Equals      bool Equals(System.Object value), bool Equals(timespan obj), bool IEquatable[timespan].Equals(timespan o...
GetHashCode int GetHashCode()                                                                                          
GetType     type GetType()                                                                                             
Negate      timespan Negate()                                                                                          
Subtract    timespan Subtract(timespan ts)                                                                             
ToString    string ToString(), string ToString(string format), string ToString(string format, System.IFormatProvider...


In [78]:
$dtm_begin = Get-Date '2019/08/30 13:32'
$dtm_end = Get-Date '2019/08/30 17:09'
$span = New-Timespan $dtm_begin $dtm_end
$dtm_begin = Get-Date '2019/08/30 13:32'
$dtm_end = Get-Date '2019/08/30 17:09'
$span = New-Timespan $dtm_begin $dtm_end

In [80]:
$span | format-list

Days              : 0
Hours             : 3
Minutes           : 37
Seconds           : 0
Milliseconds      : 0
Ticks             : 130200000000
TotalDays         : 0.150694444444444
TotalHours        : 3.61666666666667
TotalMinutes      : 217
TotalSeconds      : 13020
TotalMilliseconds : 13020000



In [82]:
'{0:g}' -f $span
3:37:00
In [84]:
$str = '{0:g}' -f $span
$str.Substring(0, $str.length -3)
$str = '{0:g}' -f $span
$str.Substring(0, $str.length -3)
3:37

In [86]:
$dtm_begin2 = Get-Date '2019/08/30 16:44'
$dtm_end2 = Get-Date '2019/08/31 1:09'
$span2 = New-Timespan $dtm_begin2 $dtm_end2
$str2 = '{0:g}' -f $span2
$str2.Substring(0, $str2.length -3)
$dtm_begin2 = Get-Date '2019/08/30 16:44'
$dtm_end2 = Get-Date '2019/08/31 1:09'
$span2 = New-Timespan $dtm_begin2 $dtm_end2
$str2 = '{0:g}' -f $span2
$str2.Substring(0, $str2.length -3)
8:25

reference

</div>