如何在c#中为Windows窗体应用格式化此日期对象?
我正在制作一个简单的Windows窗体应用程序,允许用户根据在文本字段中输入的内容选择任何文件并将其重命名为默认格式的名称 示例:“08_21_2015_DrJohnSmith_HowToSellHomes.mp3”—— 我遇到的问题是,我不知道如何设置日期文本框的格式,以便它以这种格式保存文件: “08_21_2015_DrJohnSmith_HowToSellHomes.mp3” 现在以以下格式保存文件: 2015年8月21日,星期五Drjohnsmith_HowToSellHomes.mp3 我知道这很容易做到,但我是编程新手,本周刚开始学习C#,因此非常感谢您的帮助。这是我的密码。表单图像上方的链接如何在c#中为Windows窗体应用格式化此日期对象?,c#,.net,windows-forms-designer,C#,.net,Windows Forms Designer,我正在制作一个简单的Windows窗体应用程序,允许用户根据在文本字段中输入的内容选择任何文件并将其重命名为默认格式的名称 示例:“08_21_2015_DrJohnSmith_HowToSellHomes.mp3”—— 我遇到的问题是,我不知道如何设置日期文本框的格式,以便它以这种格式保存文件: “08_21_2015_DrJohnSmith_HowToSellHomes.mp3” 现在以以下格式保存文件: 2015年8月21日,星期五Drjohnsmith_HowToSellHomes.mp
using System;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void selectFileBtn_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void outputFileBtn_Click(object sender, EventArgs e)
{
var outputFolder = outputFileTB;
folderBrowserDialog1.ShowDialog();
outputFolder.Text = folderBrowserDialog1.SelectedPath;
}
private void openFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
selectFileTB.Text = openFileDialog1.FileName;
}
private void saveBtn_Click(object sender, EventArgs e)
{
File.Move(selectFileTB.Text, outputFileTB.Text + "/" + dateTimePicker1.Text + speakerTitleTB.Text + firstNameTB.Text +
lastNameTB.Text + "_" + messageTitleTB.Text + ".txt");
}
}
}
替换
dateTimePicker1.Text
与
替换
dateTimePicker1.Text
与
我看到您使用的是
dateTimePicker1.Text
-它返回用户看到的所选日期值的文本表示形式,这显然不是您想要的:)
首先,通过使用dateTimePicker1.value
而不是.Text
提取实际的DateTime
值,然后使用DateTime.ToString()
方法并指定一个格式字符串来完全控制生成的内容,如下所示:
dateTime.ToString( "MM_dd_yyyy", CultureInfo.InvariantCulture )
当使用.ToString
(在日期、数字或大多数值上)时,如果它有一个重载接受IFormatInfo
,则使用它显式指定CultureInfo.InvariantCulture
或CultureInfo.CurrentCulture
(根据当前的Microsoft FxCop指南)。如果您想在多个平台上实现一致的行为,请务必使用InvariantCulture
,因为如果您使用CurrentCulture
,那么输出文本可能不是您所期望的-这对于像“MM\u dd\u yyyyy”
这样的完全自定义字符串不是问题,但是如果您使用像“g”这样的标准格式字符串
或“d”
然后您将在不同的机器上看到截然不同的结果
顺便说一句,我强烈建议您使用yyyy-MM-dd
作为日期格式,而不是MM\u-dd\u-yyyy
这样可以在文本列表中按时间顺序对文件进行排序(例如在Windows的文件资源管理器中),否则您将按月、日、年对文件进行排序,这毫无意义
最后,请注意,格式字符串MM
表示月份,而MM
表示分钟
这里有一个参考:
- 标准格式字符串:
- 自定义格式字符串:
dateTimePicker1.Text
-它返回用户看到的所选日期值的文本表示形式,这显然不是您想要的:)
首先,通过使用dateTimePicker1.value
而不是.Text
提取实际的DateTime
值,然后使用DateTime.ToString()
方法并指定一个格式字符串来完全控制生成的内容,如下所示:
dateTime.ToString( "MM_dd_yyyy", CultureInfo.InvariantCulture )
当使用.ToString
(在日期、数字或大多数值上)时,如果它有一个重载接受IFormatInfo
,则使用它显式指定CultureInfo.InvariantCulture
或CultureInfo.CurrentCulture
(根据当前的Microsoft FxCop指南)。如果您想在多个平台上实现一致的行为,请务必使用InvariantCulture
,因为如果您使用CurrentCulture
,那么输出文本可能不是您所期望的-这对于像“MM\u dd\u yyyyy”
这样的完全自定义字符串不是问题,但是如果您使用像“g”这样的标准格式字符串
或“d”
然后您将在不同的机器上看到截然不同的结果
顺便说一句,我强烈建议您使用yyyy-MM-dd
作为日期格式,而不是MM\u-dd\u-yyyy
这样可以在文本列表中按时间顺序对文件进行排序(例如在Windows的文件资源管理器中),否则您将按月、日、年对文件进行排序,这毫无意义
最后,请注意,格式字符串MM
表示月份,而MM
表示分钟
这里有一个参考:
- 标准格式字符串:
- 自定义格式字符串:
yyyy-MM-dd
,谢谢您,因为这是该应用程序确保文件在文件夹中按时间顺序自动排序的主要原因之一。一旦我达到15分,我会回来投票,非常感谢!非常感谢你,戴,它真的很有魅力!根据您的建议,我将其更改为yyyy-MM-dd
,谢谢您,因为这是该应用程序确保文件在文件夹中按时间顺序自动排序的主要原因之一。一旦我达到15分,我会回来投票,非常感谢!别忘了接受解决你问题的答案之一。别忘了接受解决你问题的答案之一。