サインイン
Microsoft.com
日本 (日本語)
Brasil (Português)
Česká republika (Čeština)
Deutschland (Deutsch)
España (Español)
France (Français)
Italia (Italiano)
United States (English)
Россия (Русский)
대한민국 (한국어)
香港特别行政區 (中文)
台灣 (中文)
中华人民共和国 (中文)
IT プロフェッショナルのための技術情報サイト
ホーム
ライブラリ
ラーニング
ダウンロード
サポート
コミュニティ
フォーラム
IT プロフェッショナルのための技術情報サイト
>
フォーラム ホーム
>
Windows Powershell フォーラム
>
Windows PowerShell
>
年齢をもとめる
質問する
フォーラムを検索:
Microsoft TechNet フォーラム全体の検索
年齢をもとめる
2009年10月19日 2:19
TAKAKUN
0
サインインして投票
お世話になっております。
年齢を求める方法を考えており、次の方法で対応しようと思っていたのですが、うるう年じゃないときにひっかてしまい、
対策を考えております。下記のコマンドをみてご教授お願いします。
条件:誕生日の前日をもって年齢を+1する
ex.1/1生まれ ~12/31 = 1歳とする
閏年の場合
> ([datetime]((New-TimeSpan $([datetime]"1999/3/1") $([datetime]"2000/2/29")).ticks)).year -1
>1
閏年ではない場合
> ([datetime]((New-TimeSpan $([datetime]"2002/3/1") $([datetime]"2003/2/28")).ticks)).year -1
>0 0となってしまう。
ご教授お願いします。
返信
引用
回答
2009年10月20日 8:44
HIROsDotNet
MVP
1
サインインして投票
New-TimeSpanでどのようにして良いかわからず、下記のような関数を作ってみました。
function Get-Age([DateTime]$Birthday, [DateTime]$Today = [DateTime]::Now)
{
#数え年を計算
$Year = $Today.Year - $Birthday.Year
#今年の誕生日を計算(誕生日の前日を求める)
$ThisBirthday = $Birthday.AddYears($Year).AddDays(-1)
#今日が誕生日の前日より前なら数え年から1引く
if ($Today -lt $ThisBirthday )
{
$Year-=1
}
return $Year
}
この関数は
Get-Age "誕生日" "基準日"
として使用します。
たとえば
Get-Age "1999/3/1" "2000/2/29"
のように。
ここでいう基準日は、○月X日時点で何歳かを調べるための日付を意味します。
基準日は省略することができ、省略した場合は"今日"を指定したことになります。
この関数を使用して、
閏年の場合1999/3/1~2000/2/29を計算すると、1
閏年ではない場合2002/3/1~2003/2/28を計算すると、1
となります。
*誕生日の求め方はいろいろとあるようですが、ここでは「条件:誕生日の前日をもって年齢を+1する」に従って計算しています。
コードに関して、おかしな部分がありましたらご指摘願います
回答としてマーク
TAKAKUN
2009年10月23日 6:22
編集済み
HIROsDotNet
MVP
2009年10月20日 8:46
文章追記
返信
引用
すべての返信
2009年10月20日 8:44
HIROsDotNet
MVP
1
サインインして投票
New-TimeSpanでどのようにして良いかわからず、下記のような関数を作ってみました。
function Get-Age([DateTime]$Birthday, [DateTime]$Today = [DateTime]::Now)
{
#数え年を計算
$Year = $Today.Year - $Birthday.Year
#今年の誕生日を計算(誕生日の前日を求める)
$ThisBirthday = $Birthday.AddYears($Year).AddDays(-1)
#今日が誕生日の前日より前なら数え年から1引く
if ($Today -lt $ThisBirthday )
{
$Year-=1
}
return $Year
}
この関数は
Get-Age "誕生日" "基準日"
として使用します。
たとえば
Get-Age "1999/3/1" "2000/2/29"
のように。
ここでいう基準日は、○月X日時点で何歳かを調べるための日付を意味します。
基準日は省略することができ、省略した場合は"今日"を指定したことになります。
この関数を使用して、
閏年の場合1999/3/1~2000/2/29を計算すると、1
閏年ではない場合2002/3/1~2003/2/28を計算すると、1
となります。
*誕生日の求め方はいろいろとあるようですが、ここでは「条件:誕生日の前日をもって年齢を+1する」に従って計算しています。
コードに関して、おかしな部分がありましたらご指摘願います
回答としてマーク
TAKAKUN
2009年10月23日 6:22
編集済み
HIROsDotNet
MVP
2009年10月20日 8:46
文章追記
返信
引用
2009年10月23日 6:22
TAKAKUN
0
サインインして投票
ご返事遅くなり、申し訳ございません。
ありがとうございます。
参考にさせていただきます。
なかなか、標準実装ではムヅカシイものがあります。
ありがとうございました。
返信
引用
フォーラムに関するヘルプ (FAQ)
© 2009 Microsoft Corporation. All rights reserved.
プロファイル (個人情報) の管理
|
お問い合わせ先
|
TechNet の情報を無料ニュースレターで入手
|
日本での個人情報の取り扱い
|
サイトマップ
|
使用条件
|
商標
|
プライバシー