Yesterday, we took a look at how the properties of an object
allows us to easily consume information.
The next object member we are going to look at are methods. Methods are
awesome. They essentially are free code
that you can utilize so you do not need to write it yourself. A method is usually an action that an object
can on itself. Take a look at the
methods that are provided from the System.Datetime object that is produced by Get-Member.
PS C:\> Get-Date |
Get-Member -MemberType Methods
TypeName: System.DateTime
Name MemberType Definition
---- ---------- ----------
Add Method datetime Add(timespan value)
AddDays Method
datetime AddDays(double value)
AddHours Method datetime AddHours(double value)
AddMilliseconds Method
datetime AddMilliseconds(double
value)
AddMinutes Method datetime AddMinutes(double value)
AddMonths Method datetime AddMonths(int months)
AddSeconds Method datetime AddSeconds(double value)
AddTicks Method datetime AddTicks(long value)
AddYears Method datetime AddYears(int value)
CompareTo Method int CompareTo(System.Object value), int
CompareTo(datetime value), int IComparable.C...
Equals Method bool Equals(System.Object value), bool
Equals(datetime value), bool IEquatable[datet...
GetDateTimeFormats Method
string[] GetDateTimeFormats(), string[]
GetDateTimeFormats(System.IFormatProvider pr...
GetHashCode Method int GetHashCode()
GetObjectData Method void
ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo
info...
GetType Method type GetType()
GetTypeCode Method System.TypeCode GetTypeCode(),
System.TypeCode IConvertible.GetTypeCode()
IsDaylightSavingTime
Method bool
IsDaylightSavingTime()
Subtract Method timespan Subtract(datetime value),
datetime Subtract(timespan value)
ToBinary Method long ToBinary()
ToBoolean Method bool
IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte Method byte
IConvertible.ToByte(System.IFormatProvider provider)
ToChar Method char
IConvertible.ToChar(System.IFormatProvider provider)
ToDateTime Method datetime
IConvertible.ToDateTime(System.IFormatProvider provider)
ToDecimal Method decimal
IConvertible.ToDecimal(System.IFormatProvider provider)
ToDouble Method double
IConvertible.ToDouble(System.IFormatProvider provider)
ToFileTime Method long ToFileTime()
ToFileTimeUtc Method long ToFileTimeUtc()
ToInt16 Method int16
IConvertible.ToInt16(System.IFormatProvider provider)
ToInt32 Method int
IConvertible.ToInt32(System.IFormatProvider provider)
ToInt64 Method long
IConvertible.ToInt64(System.IFormatProvider provider)
ToLocalTime Method datetime ToLocalTime()
ToLongDateString Method
string ToLongDateString()
ToLongTimeString Method
string ToLongTimeString()
ToOADate Method double ToOADate()
ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider
provider)
ToShortDateString Method
string ToShortDateString()
ToShortTimeString Method
string ToShortTimeString()
ToSingle Method float
IConvertible.ToSingle(System.IFormatProvider provider)
ToString Method
string ToString(), string ToString(string format), string
ToString(System.IFormatPro...
ToType Method System.Object IConvertible.ToType(type
conversionType, System.IFormatProvider provider)
ToUInt16 Method uint16
IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32 Method uint32
IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider
provider)
ToUniversalTime Method
datetime ToUniversalTime()
What does all of this mean?
Well, let’s use this as an example.
It is December 31, 1999 at 23:59:59. Now, add 2 seconds to this DateTime
object. You need to provide the
intelligence to your code to know:
- There are 60 seconds per minute
- There are 60 minutes per hour
- There are 24 hours in a day
- There are 31 days in December
- There are 12 months in a year
- December is the last month of the year.
- January is the first month of the year.
That sounds a bit daunting. Why do it when the
System.DateTime object already has done this for you. Let’s first create the
Datetime object to represent our situation.
PS C:\> Get-Date -Year 1999 -Month 12 -Day 31 -Hour 23
-Minute 59 -Second 59
Friday, December 31, 1999 11:59:59 PM
From the member information above, take note of the method
called AddSeconds(). It accepts one
argument. That is the number of seconds
that you want to add to the DateTime object.
Here are a few ways how to use it to add 2 seconds to our DateTime
object and roll in the year 2000.
# Dot notation
(Get-Date -Year 1999 -Month 12 -Day 31 -Hour 23 -Minute 59 -Second 59).AddSeconds(2)
# Object enumeration with the basic syntax of ForEach-Object
Get-Date -Year
1999 -Month
12 -Day 31 -Hour 23 -Minute 59 -Second 59 |
ForEach-Object
-MemberName AddSeconds
-ArgumentList 2
# Object enumeration with the advanced syntax of
ForEach-Object
Get-Date -Year
1999 -Month
12 -Day 31 -Hour 23 -Minute 59 -Second 59 |
ForEach-Object
-Process {$_.AddSeconds(2)}
# Using a variable with dot notation
$Date = Get-Date
-Year 1999
-Month 12 -Day 31 -Hour 23 -Minute 59 -Second 59
$Date.AddSeconds(2)
# Using a .NET constructor for System.DateTime and dot
notation
([Datetime]$Date =
"12/31/1999 23:59:59").AddSeconds(2)
Any of these solutions will give you the result.
Saturday, January 1, 2000 12:00:01 AM
Much easier than trying to code this object yourself. As
with properties, you can find a variety of different methods in the online
documentation at MSDN.
Comments