【问题标题】:How to concatinate customize School Year in C#如何在 C# 中连接自定义学年
【发布时间】:2018-10-07 13:30:35
【问题描述】:

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

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

我怎样才能生成这种自动连接的格式,而不必基于当前年份。 谢谢您的帮助。

【问题讨论】:

  • “不必以当年为基础”是什么意思?你可以使用任何你想要的年份,但你从哪里得到它?
  • 顺便说一句,我怀疑您确定格式化学年的逻辑是否有效。您不会从 17-18 学年到 19-20 学年,而是从 18-19 学年。某一年总是在 两个 学年:2018 年是 SY17-18 和 SY18-19,具体取决于当年的时间。
  • 我很抱歉,但这应该是为了 SY。我马上跳到 19-20 是错误的。由于我的程序是基于 DateTime.Now 的,所以我试图找到一种在输入许多 SY 条目时按顺序连接 SY 的方法。
  • 您需要检查之前或未来多少年或至少需要一个起始年份来开始
  • @Lauren 是我的回答,你的意思是什么,还是我理解错了?

标签: c# date primary-key


【解决方案1】:

如果 Current DateTime 显示 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);

【讨论】:

  • 它的枚举范围解决方案
  • 好吧,我写了我理解的,OP应该说如果这是她想要的
  • 嗨@AshkanMobayenKhiabani,感谢您的意见。请问,“$”是干什么用的?这是我的错误。它说 ' ;预期 ' .
  • $ 用于格式化文本,如果您使用的是旧版本的 C#,而不是 $",SY{i}-{i+1}",您可以使用 string.Format(",SY{0}-{1}", i, i+1)",SY" + i.ToString() + "-" + (i+1).ToString()
  • 不客气。如果有帮助,别忘了标记为答案。
【解决方案2】:
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")));
}

这应该工作

【讨论】:

  • 感谢您的帮助 Arijit。我只是想知道如何在文本框中显示返回值,因为它应该在表单加载时加载。很抱歉打扰了。
  • 嗨,Arijit,每当我运行程序时,它应该在文本框中,它应该在我进入新学年之前立即生成主键
  • 你可以做的只是将函数的值赋给 textboc 值
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多