自订格式包括日期

时间:2010-09-13 20:18:12

标签: vb.net date replace format

在我的应用程序中,我向用户提供了一个选项,用于自定义生成的文件的名称。程序读取的格式字符串类似于"yyyyMMdd-%1-%2-%3-%4",用户可根据自己的喜好进行自定义。

在这种情况下,日期的格式为yyyyMMdd%1为1000P的旅行号码,%2是PTTTT的原始代码,%3是目标代码如PHYUD,而%4是二级停止代码,如YYYY123。

我在将实际数据和格式转换为自定义字符串时遇到问题。我相信它的日期格式我会被卡住。到目前为止我已经

sOut = txtFormatPattern.Text
sOut = sOut.Replace("%1", "1000P")
sOut = sOut.Replace("%2", "PTTTT")
sOut = sOut.Replace("%3", "PHYUD")
sOut = sOut.Replace("%4", "YYYY123")

sOut = myDate.ToString(sOut) 'date is July 01, 2007

输出为“20070701-#1000P-PTTTTP12YUD(YYYY123)” 这里的问题显然是我的最后一次转换。该字符串包含关键字符,表示PHYUD中特定日期的一部分。所以我的问题是如何让我的用户灵活地按照他们的意愿格式化输出,然后正确转换?

AGP

2 个答案:

答案 0 :(得分:0)

我想用上述对象替换令牌,但也包括日期和时间的一些灵活性。我通过执行以下操作解决了这个问题:

'first replace the tokens by escaping the % character and number so that the
'date/time formatting ignores it
sOut = txtFormatPattern.Text
sOut = sOut.Replace("%1", "\%\1")
sOut = sOut.Replace("%2", "\%\2")
sOut = sOut.Replace("%3", "\%\3")
sOut = sOut.Replace("%4", "\%\4")

'now apply the date/time formatting as set by the user. the end result strips out
'the escape characters and ignores them for date/time formatting
sOut = myDate.ToString(sOut) 'date is July 01, 2007

'we should now have applied the date/time formatting and still have the original
'tokens so just replace
sOut = sOut.Replace("%1", "1000P")
sOut = sOut.Replace("%2", "PTTTT")
sOut = sOut.Replace("%3", "PHYUD")
sOut = sOut.Replace("%4", "YYYY123")

使用此例程,用户可以将格式字符串设置为“yyyyMMdd-%1-%2-%3-%4”,结果输出为“20070701-#1000P-PTTTT-PHYUD-YYYY123”

这应该适用于用户可以在选项中设置的日期/时间格式的任何变体,因为有效标记始终用%n表示。

AGP

答案 1 :(得分:0)

您可以使用String.Format做您想做的事。花括号内的每个部分都是传递给函数的参数的占位符。

或者,您可以将冒号放在另一个特定于参数的格式化字符串中。

sOut = String.Format("{0:yyyyMMdd} {1} {2} {3} {4}", myDate, "1000P", "PTTTT", "PHYUD", "YYYY123")