vb.net日期格式与c#datetime格式

时间:2017-11-14 19:01:29

标签: c# vb.net date formatting

我正在做一个Visual Studio vb.net WinForm应用程序。

我习惯使用c#。在C#Datetime DataType中,我已配置为“dd / MM / yyyy”,如在“控制面板”和“Regedit”中配置的那样。

在VB.Net中,当我创建像这样的日期变量

时,情况会有所不同

Dim var As New Date
var = DateTime.Now

Date.Now返回格式“mm / dd / yyyy”。

因此每个日期格式都指定一个变量,VB.Net会自动转换为格式“mm / dd / yyyy”。

我需要将VB.Net中的Date DataType配置为C#。我的意思是“dd / MM / yyyy”,因为它是在控制面板中配置的。

这可能吗?

由于

3 个答案:

答案 0 :(得分:1)

  

我想以格式dd / MM / yyyy

工作

实际上,你不是。您希望将日期用作DateTime类型,因为它最灵活。存储和使用日期作为另一种类型(例如特定格式的字符串)本质上不如使用正确类型那样灵活且更容易出错。

这是一个感性问题;你以某种方式思考日期,而你似乎要求计算机以你的方式代表它们,但这就是缺陷;你需要在路上使用日期.net这样做是因为它是最好的方式。

就像你不会想到在一个字符串中存储/​​处理你的数字一样,因为" 2" +" 2" =" 22",而2 + 2 = 4,你应该存储,操作和处理日期是DateTimes。如果您想要在屏幕上显示日期数据时的特定表示,那么您可以为美国朋友将其格式化为MM / dd / yy,或者为您的欧洲人将其格式化为dd-MM-yyyy

  

dd = 16 +' /' + 10 +' /' + 17   它应该分配16/10/2017,但它分配10/16/2017 ..

其他人已经介绍了这一点,但无论Date是什么类,转储它,并使用内置的DateTime,可能是这样的:

DateTime d = new DateTime(2017, 10, 16);

DateTime有一个构建器,需要一年,一个月和一天。一旦你有了你的日期时间对象,你可以用AddXXX方法操作它来增加10天或减去15个小时等。你可以做onedate - anotherdate并获得一个TimeSpan对象,告诉你两者之间有多少分钟,小时等日期..等等

  

但它需要在General中定义所有应用程序。我需要默认情况下将日期类型定义为dd / MM / yyyy。

你不能。除了内部执行方式之外,.NET绝不会以任何方式考虑您的日期,除了它编程之外,它永远不会以任何方式处理它。你说你知道如何在前往报告的过程中对其进行格式化...你似乎在说你要全局指定这种格式,这样每当你或任何人看到一个日期时,它就是那种格式。你必须明白.net仍然会将日期视为内部的方式。您可以而且应该只影响将屏幕上的日期以某种可见形式显示给用户阅读的过程部分。但实际上,如果您正在编写将由其他人使用的应用程序,那么< em>不应该覆盖他们的系统在您的应用中处理日期的方式..

你应该只使用日期作为日期,.ToString()在你需要的时候将它们放到屏幕上,然后让处理转换的线程使用它从用户那里获取的任何文化特定设置。的操作系统。这种方式你的应用程序使用日期作为日期,使用你的应用程序的美国人看到10/12/2017并知道它是第12个oct,并且欧洲人使用你的应用程序看到12-10-2017并且知道相同的

如果要在开发期间强制使用特定日期格式,请将Windows文化设置设置为所需的格式。不要在您的应用中硬编码日期格式

  

如果我要求DateTime.Now,它会返回&#34; MM / dd / yyyy&#34;,我需要检索格式&#34; dd / MM / YYYY&#34;

不,它没有。 Datetime.Now返回计算机时钟的快照的DateTime对象。它在内部将日期表示为数字,而不是字符串,而不是任何格式等。当您使用MessageBox.Show它(或其他)时,它会转换为字符串文本表示形式,并且它是您的&#39重新看作&#34; MM / dd / yyyy&#34;但肯定就像哎呀DateTime.Now没有给你回一个字符串&#34; 10/12/2017&#34;

  

在Main()中添加

    Dim dd As DateTime = DateTime.Now

Soo ..让我了解你将这个问题标记为C#的部分的逻辑,说它是C#,刚才你从#34;你的程序&#中倾倒了大量的VB.NET 34;进去吧?

  

我想要一个全局设置,所以我得到&#34; dd / MM / YYYY&#34;在我的所有应用程序中,所以每次我需要它时都不需要Parse或Cast ....

真的,想想我曾经说过.NET如何处理日期。您将日期存储为DateTime实例。当您获得用户输入并创建用户输出时,这些实际上是您可能需要从字符串表示转换为日期的唯一时间,但在输入方面,有些控件(如DatePicker)允许用户选择日期和时间,并给你他们选择的值,作为DateTime - 不涉及任何字符串。在输出方面;保留 - 让日期以用户(包括您)在Windows区域控制面板中选择的任何格式显示

如果您正在阅读包含特定格式日期的文本文件,那么当您使用DateTime.ParseExact()时,将该文本表示转换为DAteTime。但是您将它存储在应用程序内存,xml文件,数据库列等中,作为正确的DateTime(或等效)数据类型,而不是字符串

这里的问题不在于.NET如何考虑约会,而是关于你如何思考它们/你如何思考.net对它们的思考。一旦你完成了这一部分,它就会变得更容易

答案 1 :(得分:0)

覆盖Global.asax上的日期格式

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
    newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
    newCulture.DateTimeFormat.DateSeparator = "/";
    Thread.CurrentThread.CurrentCulture = newCulture;
}

答案 2 :(得分:0)

在C#中,

std::distance(begin, end) == sizeof(T)

在VB.Net

string date_string = dd.ToString("dd-MM-yyyy");