使用c#从.txt文件中检索日期信息

时间:2014-05-20 10:53:04

标签: c#

namespace SimpleLicense
{
class Program
{
    static void Main(string[] args)
    {

        string fileName = @"C:\\Temp\\test.txt";

        try
        {
            // Check if file already exists. If yes, delete it. 
            if (File.Exists(fileName))
            {
                File.Delete(fileName);
            }

            // Create a new file 
            Directory.CreateDirectory(Path.GetDirectoryName(fileName));

            using (StreamWriter sw = File.CreateText(fileName))
            {
                sw.WriteLine("Thermo Licensing System file");
                sw.WriteLine("------------------------------------");
                sw.WriteLine("Installed Date: {0}", DateTime.Now.ToString());


                DateTime newDate = DateTime.Now.AddDays(31);
                sw.WriteLine("License Expires After"+" "+newDate);

                sw.WriteLine("Number of Days Remaining  ");
                sw.Close();

               // sw.WriteLine("Add ");
               // sw.WriteLine("Done! ");
            }

            // Write file contents on console. 
            using (StreamReader sr = File.OpenText(fileName))
            {
                string s = "";
                while ((s = sr.ReadLine()) != null)
                {
                    Console.WriteLine(s);
                }
                     Console.ReadLine();
            }
        }
        catch (Exception Ex)
        {
            Console.WriteLine(Ex.ToString());
        }
    }
  }
}

.txt文件的内容

Thermo Licensing System file
------------------------------------
Installed Date: 20-05-2014 16:01:42
License Expires After 20-06-2014 16:01:42
Number Of Days Remaining

大家好,

我已经编写了上面的代码来将日期和时间信息存储到上面给出的.txt文件中。我希望将剩余天数的信息存储在.txt文件中。你可以看到今天的日期是20-5 -2014,许可证于20-6-2014到期。应在剩余天数旁边打印30个。

如果用户更改系统时钟,并将日期更改为21-5-2014,则应在剩余天数旁边打印29天

我还希望在特定日期执行申请时,日期应设置为该日期,即安装日期,不应更改,剩余天数应根据安装日期

任何人都可以帮我解决这个问题吗?

由于

3 个答案:

答案 0 :(得分:2)

此代码将为您提供天数:

int numberOfDays = newDate.Subtract(DateTime.Now).Days;
sw.WriteLine("Number of Days Remaining: " + numberOfDays.ToString());

答案 1 :(得分:0)

你可以使用以下的分期付款代码

var Remainingdays=(LicenseExpires-InstalledDate).TotalDays

如果你想要int天,那么

var Remainingdays=(LicenseExpires-InstalledDate).Days

答案 2 :(得分:0)

我假设你想做时间有限的软件版本?

虽然在之前的答案中发布的代码在技术上是正确的,但您可能不应该使用DateTime.Now,因为用户可以篡改系统时钟并规避您的措施。从其他来源获取当前日期,例如:

http://www.worldtimeserver.com/

这有它的缺点,比如增加启动时间以及如果页面或用户的连接断开怎么办?

更好更容易的解决方案是忘记时间限制并限制应用程序启动的次数。然后你只需在打开程序时加载数字,并在结束时写下减少的数字。

此外,将相关值存储为明文(有用的用户友好描述不会少!)可能不是一个好主意,因为任何中途精明的用户可能只是窥探文件并在任何文本编辑器中编辑它们。您可能希望使用某种加密算法,如AES:

http://msdn.microsoft.com/pl-pl/library/system.security.cryptography.aes%28v=vs.110%29.aspx