根据您使用的文化,有many different ways个代表日期。
假设我将美国日期定为2018年1月2日:“ 1/2/2018”。
我想创建一种方法,以相同的区域性格式返回相同的值,但年份部分只包含两位数字。
例如:
dd/mm/yyyy -> dd/mm/yy mm/dd/yyyy -> mm/dd/yy yyyy-mm-dd -> yy-mm-dd
我想使用一个DateTime
变量,并在相同的区域性中返回相同的日期变量,但年份格式为yy。
如果我做这样的事情,对每种文化都可以吗?
var year = mydate.ToShortDate.ToString("yy");
var date = mydate.ToShortDate.Substring(0, mydate.Count() - 4) + year;
在许多文化中,我的输入将是.ToShortDate()
答案 0 :(得分:2)
据我所知,没有适当的方法来执行此操作,因此以下内容应视为黑客。
让我们假设日期保存在DateTime中。如何到达那里并不重要。
现在的任务是根据短日期格式将其转换为字符串表示形式,不管是哪种形式,但使用yyyy而不是yy。
http://www.basicdatepicker.com/samples/cultureinfo.aspx
在几乎所有文化中,短日期格式似乎都包含yyyy或yy,所以让我们做个假设。
现在可以通过这种方式完成转换。
var sampleDate = new DateTime(1992, 12, 31);
var formatString = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
var newFormatString = formatString.Replace("yyyy", "yy");
var sampleDateAsString = sampleDate.ToString(newFormatString);
如果原始格式字符串不包含“ yyyy”,则新格式字符串将与原始格式字符串相同。
当然,您可以获取任何区域性的ShortDatePattern,而不仅仅是此处所示的当前区域性。