gorby
(RPA Ninja)
1
こんにちは
StudioX 2022.4.6を使用中です。
System のパッケージバージョンはv22.4.5です。
1.やりたいこと
和暦文字列変数をDateTime変数に変換したい。
2.悩んでいること
現在のスレッドのロケールを下記構文で日本に設定後
System.Threading.Thread.CurrentThread.CurrentCulture=New System.Globalization.CultureInfo("ja-JP")
str_d1="昭和35年3月1日"
とした後
date_d1=DateTime.ParseExact(str_d1, "gy年M月d日", New System.Globalization.CultureInfo("ja-JP"))
を実行したら、添付画像のエラーが出ました。対処策がわかる方、ご教示ください。
date_d1の変数型は
System.datetimeです。
Yoichi
(Yoichi)
2
こんにちは
まずはエラーダイアログの「詳細」を開いてエラーの原因となる情報を共有ください。
対象文字列がDateTimeとして認識できない旨であれば、日本のカレンダーがセットされていないことが原因である可能性が高いので、これを事前にセットください。
gorby
(RPA Ninja)
4
お世話になります、下記が詳細のエラー情報です。
22.4.6+Branch.support-v22.4.Sha.21335593b663e604ea781598b95625f6bfb66bd4
ソース: 複数代入
メッセージ: ‘DateTime.ParseExact(str_d1, “gy年M月d日”, New System.Globalization.CultureInfo(“ja-JP”))’ を ‘date_d1’ に割り当てられません。
例外の型: System.InvalidOperationException
RemoteException wrapping System.InvalidOperationException: ‘DateTime.ParseExact(str_d1, “gy年M月d日”, New System.Globalization.CultureInfo(“ja-JP”))’ を ‘date_d1’ に割り当てられません。 —> RemoteException wrapping System.FormatException: 文字列は有効な DateTime ではありませんでした。
場所 System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
場所 lambda_method(Closure , ActivityContext )
場所 Microsoft.VisualBasic.Activities.VisualBasicValue1.Execute(CodeActivityContext context) 場所 System.Activities.CodeActivity1.InternalExecuteInResolutionContext(CodeActivityContext context)
場所 System.Activities.Runtime.ActivityExecutor.ExecuteInResolutionContext[T](ActivityInstance parentInstance, Activity1 expressionActivity) 場所 System.Activities.InArgument1.TryPopulateValue(LocationEnvironment targetEnvironment, ActivityInstance activityInstance, ActivityExecutor executor)
場所 System.Activities.RuntimeArgument.TryPopulateValue(LocationEnvironment targetEnvironment, ActivityInstance targetActivityInstance, ActivityExecutor executor, Object argumentValueOverride, Location resultLocation, Boolean skipFastPath)
場所 System.Activities.ActivityInstance.InternalTryPopulateArgumentValueOrScheduleExpression(RuntimeArgument argument, Int32 nextArgumentIndex, ActivityExecutor executor, IDictionary2 argumentValueOverrides, Location resultLocation, Boolean isDynamicUpdate) 場所 System.Activities.ActivityInstance.ResolveArguments(ActivityExecutor executor, IDictionary2 argumentValueOverrides, Location resultLocation, Int32 startIndex)
場所 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
— End of inner exception stack trace —
場所 System.Activities.Statements.Throw.Execute(CodeActivityContext context)
場所 System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
場所 System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
場所 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
Yoichi
(Yoichi)
5
なので、取り急ぎの対応は
「対象文字列がDateTimeとして認識できない旨であれば、日本のカレンダーがセットされていないことが原因である可能性が高いので、これを事前にセットください。」
になります。以下でご自身で記載している内容になります。
gorby
(RPA Ninja)
6
ご指導の通り修正したら動きました。和暦カレンダー操作は久しぶりなので、忘却の彼方です。