计算每个星期的日期
问题描述:
好的,所以我有以下代码来获取文件夹名称中的最后4个字符,它始终是日期,格式为MMDD。此日期也将始终是星期一的日期。计算每个星期的日期
文件夹名称例如低于修剪:C:\ TEMP \ TEXTFILES \ 20120813
Dim MMDD_Date As String = Microsoft.VisualBasic.Right(TextBox1_Path.Text, 4)
什么我不确定的,是如何计算的剩余天数为一周,在星期五结束。 Obvioulsy你不能将字符串转换为int并加1,因为有些月份有29,30或31取决于闰年。
最终的结果会是这样的:
星期一:0813
星期二:0814
星期三:0815
周四:0816
周五:0817
有什么建议可以让我指出正确的方向吗?
答
看起来像你想要的东西。我不完全确定。这是在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);
答
使用年,月,日创建日期时间。使用该创建日期可以轻松获得后续日子。
' 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")
答
好吧,好吧,这就是我想出的。接受@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)
您是否有“年”(YYYY)组件? – Channs 2012-08-14 13:36:36
是的,年份组件是文件夹名称的一部分。文件夹名称示例:C:\ Temp \ Textfiles \ 20120813 – Muhnamana 2012-08-14 13:42:41
这是您的情况吗?请帮助我理解。如果文件夹名以'0814'(星期二)结尾,则需要从'0814'(星期二)到'0817'(星期五)的字符串列表。如果文件夹名称以'0817'(星期五)结尾,那么您需要这样做。如果文件夹名称是星期六或太阳,则它是无操作的。 – Channs 2012-08-14 14:14:10