0

わかりましたので、次のコードを使用して、フォルダー名の最後の 4 文字を取得します。これは常に日付であり、MMDD としてフォーマットされます。この日付も常に月曜日の日付になります。

以下はフォルダ名の例です: C:\Temp\Textfiles\20120813

Dim MMDD_Date As String = Microsoft.VisualBasic.Right(TextBox1_Path.Text, 4)

私が確信が持てないのは、金曜日で終わるその週の残りの日数を計算する方法です。うるう年によっては、29、30、または 31 の月があるため、文字列を int に変換して 1 を追加することはできません。

最終結果は次のようになります。

月: 0813

火: 0814

水: 0815

木: 0816

金: 0817

私を正しい方向に向けるための提案はありますか?

4

3 に答える 3

1

年、月、日を使用して DateTime を作成します。その作成日を使用して、その後の日を簡単に取得します。

   ' Parse Y, M and D (Integers) from folder name
   ' ...

    Dim X As DateTime
    X = New DateTime(Y, M, D) 

    Dim Tue As String = X.AddDays(1).ToString("MMDD")
    Dim Wen As String = X.AddDays(2).ToString("MMDD")
    Dim Thr As String = X.AddDays(3).ToString("MMDD")
    Dim Fri As String = X.AddDays(4).ToString("MMDD")
于 2012-08-14T13:43:31.117 に答える
1

このようなものが欲しいようです。よくわかりません。これは C# です。VB.NET に変換できると思います。

var folderName = @"C:\Temp\Textfiles\20120813"; //Test input
var dateString = folderName.Substring(folderName.Length - 8);
var date = DateTime.ParseExact(dateString, "yyyyMMdd", CultureInfo.InvariantCulture);

var counter = date.DayOfWeek; //OP says this is always a Monday, but is not hardcoded
var mmdd = int.Parse(folderName.Substring(folderName.Length - 4));
var myDates = new List<string>();

do
{
  myDates.Add(string.Format("{0}: {1:0000}", counter.ToString().Substring(0, 3), mmdd++)); //E.g. "Mon: 0813"
} while (counter++ < DayOfWeek.Friday);
于 2012-08-14T14:28:49.650 に答える
0

さて、これが私が思いついたものです。@channsと@Dusanから提案を受け取り、努力を組み合わせました。

    Dim FolderDate As String = TextBox1_Path.Text
    Dim DateString = FolderDate.Substring(FolderDate.Length - 8)
    Dim d = DateTime.ParseExact(DateString, "yyyyMMdd", CultureInfo.InvariantCulture)

    Dim Mon As String = d.ToString("MMdd")
    Dim Tue As String = d.AddDays(1).ToString("MMdd")
    Dim Wed As String = d.AddDays(2).ToString("MMdd")
    Dim Thu As String = d.AddDays(3).ToString("MMdd")
    Dim Fri As String = d.AddDays(4).ToString("MMdd")

    'test output
    MsgBox(Mon)
    MsgBox(Tue)
    MsgBox(Wed)
    MsgBox(Thu)
    MsgBox(Fri)
于 2012-08-14T16:38:59.333 に答える