如何在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");     
            }
        }
    }

如何在c#中为Windows窗体应用程序格式化Date对象?

我看到您正在使用dateTimePicker1.Text -它返回所选日期值的文本表示形式,因为它显示给用户,这显然不是您想要的:)

首先,使用dateTimePicker1.Value而不是.Text提取实际的DateTime值,然后使用DateTime.ToString()方法并指定一个格式字符串来完全控制生成的内容,如下所示:

dateTime.ToString( "MM_dd_yyyy", CultureInfo.InvariantCulture )

当使用.ToString(日期,数字或大多数值)时,如果它有一个接受IFormatInfo的过载,使用它显式指定CultureInfo.InvariantCultureCultureInfo.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)