如何在C#中实现自定义学年

时间:2018-10-07 13:30:36

标签: c# date primary-key

有人可以帮我吗? 我有一个程序,可以在其中添加多个学年条目。主要ID格式应为SY17-18,SY18-19等。我确实获得了格式,但是我使用的是DateTime.Now来获取当前年份,因此由于我将程序基于DateTime,所以每次运行程序时主ID都将保持不变。 这是我的代码:

int curr = Convert.ToInt32(DateTime.Now.ToString("yy"));
int dt = curr + 1;
string sy = "SY" + curr + "-" + dt;
txtSYID.Text = sy;

我如何能够产生一种这样的格式,使其自动合并而不必在当年建立。 谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果当前日期时间显示为2018/10,则我们位于SY18-19,但是2019/3仍为SY18-19(我将第6个月设置为学年末,但是您可以更改它只是作为一个例子):

DateTime date = DateTime.Now;
int curr = date.Year;
if(date.Month <= 6) curr--;  
string sy = $"SY{curr}-{curr + 1}";

编辑(考虑您的评论): 如果只想生成学年,则可以执行此操作(不需要日期时间):

Enumerable.Range(17, 50).Select(x=> $"SY{x}-{x+1}").ToArray();

上面的代码将为您提供一个包含SY50-51以下学年的数组。

如果要用逗号分隔的字符串:

for(int i=17;i<50;i++)
   sy += $",SY{i}-{i+1}";

sy = sy.SubString(1);

答案 1 :(得分:0)

public string ToFinancialYearShort(DateTime dateTime)
{
    return "SY: " + (dateTime.Month >= 4 ? (dateTime.ToString("yy") 
+ " - " +dateTime.AddYears(1).ToString("yy")) : (dateTime.AddYears(-1).ToString("yy") + " - " + dateTime.ToString("yy")));
}

这应该有效