Convert data to UK date type

  • Follow


I have a small script for reading the AV def dates from a file.

$def = (gc "C:\Program Files\Common Files\Symantec 
Shared\VirusDefs\usage.dat")[0,2,4] | foreach-object {$_.Remove(9,4)} | 
foreach-object {$_.Trim("[" + "]")} 

the output is three lines one per definition type. 
yyyymmdd
yyyymmdd
yyyymmdd 

I am looking to convert this to a UK style date output. say
$a = 30/11/2009
$b = 28/11/2009
$c = 18/11/2009

I have tried... adding

ForEach-Object {$yyyy = $_.Substring(0,4); $mm = $_.substring(4,2); $dd = 
$_.Substring(6,2)} 

With little success,  any thoughts appreciated.
Many thanks

Kev
0
Reply Utf 11/30/2009 9:28:01 PM

WW91IGNhbiB1c2UgdGhlIFJlcGxhY2Ugb3BlcmF0b3IgdG8gbW9kaWZ5IHRoZSBvcmlnaW5hbCBT
dHJpbmdzIGJ5IGNhcHR1cmluZyB0aGUgZGlmZmVyZW50IGRhdGUgcGFydHMgYW5kIHJlYXJyYW5n
ZSB0aGVtOg0KDQojIHRvIGdldCBTdHJpbmdzDQokYSwgJGIsICRjID0gJzIwMDkxMTMwJywgJzIw
MDkxMTI4JywgJzIwMDkxMTE4JyB8DQogJSB7JF8gLXJlcGxhY2UgJyguLi4uKSguLikoLi4pJywg
JyQzLyQyLyQxJ30NCiRhDQokYg0KJGMNCg0KIyB0byBnZXQgRGF0ZVRpbWUgb2JqZWN0cw0KJGEs
ICRiLCAkYyA9ICcyMDA5MTEzMCcsICcyMDA5MTEyOCcsICcyMDA5MTExOCcgfA0KICUgeyRfIC1y
ZXBsYWNlICcoLi4uLikoLi4pKC4uKScsICckMy8kMi8kMScgLWFzICdEYXRlVGltZSd9DQokYQ0K
JGINCiRjDQoNCiMgb3IsIGlmIHlvdSBjdWx0dXJlIGlzIG5vdCAnZW4tR0InIG9yICdjeS1HQicu
Li4NCiRnYiA9IFtHbG9iYWxpemF0aW9uLkN1bHR1cmVJbmZvXSdlbi1HQicNCiRhLCAkYiwgJGMg
PSAnMjAwOTExMzAnLCAnMjAwOTExMjgnLCAnMjAwOTExMTgnIHwNCiAlIHtbRGF0ZVRpbWVdOjpQ
YXJzZSgoJF8gLXJlcGxhY2UgJyguLi4uKSguLikoLi4pJywgJyQzLyQyLyQxJyksICRnYil9DQok
YQ0KJGINCiRjDQoNCi0tIA0KUm9iZXJ0

0
Reply Robert 11/30/2009 10:14:51 PM


Excellent, I was soo close had looked at -replace but not close enough.
much appreciated Robert.
K

"Robert Robelo" wrote:

> You can use the Replace operator to modify the original Strings by
> capturing the different date parts and rearrange them:
> 
> # to get Strings
> $a, $b, $c = '20091130', '20091128', '20091118' |
>  % {$_ -replace '(....)(..)(..)', '$3/$2/$1'}
> $a
> $b
> $c
> 
> # to get DateTime objects
> $a, $b, $c = '20091130', '20091128', '20091118' |
>  % {$_ -replace '(....)(..)(..)', '$3/$2/$1' -as 'DateTime'}
> $a
> $b
> $c
> 
> # or, if you culture is not 'en-GB' or 'cy-GB'...
> $gb = [Globalization.CultureInfo]'en-GB'
> $a, $b, $c = '20091130', '20091128', '20091118' |
>  % {[DateTime]::Parse(($_ -replace '(....)(..)(..)', '$3/$2/$1'), $gb)}
> $a
> $b
> $c
> 
> --
> Robert
> 
0
Reply Utf 12/1/2009 8:21:01 AM

2 Replies
381 Views

(page loaded in 0.087 seconds)


Reply: