如何在c#中为Windows窗体应用程序格式化Date对象?
本文关键字:格式化 应用程序 Date 对象 窗体 Windows 中为 | 更新日期: 2023-09-27 18:09:16
我正在制作一个简单的Windows窗体应用程序,允许用户选择任何文件并将其重命名为默认的格式化名称,基于他们在文本字段中输入的内容。
示例:"08_21_2015_DrJohnSmith_HowToSellHomes.mp3"——http://postimg.org/image/ds52o0xu1/
我遇到的问题是我不知道如何格式化日期文本框,所以它以这种格式保存文件:
" 08 _21_2015_drjohnsmith_howtosellhomes.mp3 "
现在它以以下格式保存文件:
"Friday, August 21, 2015DrJohnSmith_HowToSellHomes.mp3"
我知道这很容易做到,但我是编程新手,本周刚开始学习c#,所以任何帮助都会非常感激。这是我的代码。.
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.Value
而不是.Text
提取实际的DateTime
值,然后使用DateTime.ToString()
方法并指定一个格式字符串来完全控制生成的内容,如下所示:
dateTime.ToString( "MM_dd_yyyy", CultureInfo.InvariantCulture )
当使用.ToString
(日期,数字或大多数值)时,如果它有一个接受IFormatInfo
的过载,使用它显式指定CultureInfo.InvariantCulture
或CultureInfo.CurrentCulture
(根据当前Microsoft FxCop指南)。如果你想在多个平台上保持一致的行为,一定要使用InvariantCulture
,因为如果你使用CurrentCulture
,那么输出文本可能不是你期望的——这不是一个问题,完全自定义字符串,如"MM_dd_yyyy"
,但如果你使用标准格式的字符串,如"g"
或"d"
,那么你会看到不同的结果在不同的机器上。
顺便说一句,我强烈建议你使用yyyy-MM-dd
作为日期格式,而不是MM_dd_yyyy
,这样文件就可以在文本列表中按时间顺序排序(比如在Windows的文件资源管理器中),否则你会有按月,然后按天,然后按年排序的文件,这是没有意义的。
最后,请注意,在格式字符串中,MM
表示月,而mm
表示分钟。
这里有一个参考:
- 标准格式字符串:https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx
- 自定义格式字符串:https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
Replace
dateTimePicker1.Text
dateTimePicker1.Value.ToString("dd_MM_yyyy", CultureInfo.InvariantCulture)