开发者

C# P/Invoke Attribute

开发者 https://www.devze.com 2023-03-30 01:47 出处:网络
New to C# Compact edition 6.5. I am trying to set the datetime on a file which seems to be off by 5 hours from the actual syst开发者_JAVA技巧em time.I am doing only this to create the file:

New to C# Compact edition 6.5. I am trying to set the datetime on a file which seems to be off by 5 hours from the actual syst开发者_JAVA技巧em time. I am doing only this to create the file:

        FileStream fs= File.Create(name);  

Just doing this the Created date is 5 hours ahead...if I try and set the CreationTime I get a compile error saying the Attribute is Readonly, seriously?

        FileInfo fi = new FileInfo(name);
        fi.CreationTime = date;

So my question is since I am new to C# how do you get access to a "readonly" Attribute in the CE framework? I see mentioning of P/Invoke but seems to work on methods only and not attributes. Anyone can given a quick demo on how to do this?

I've tried this solution and still get the file writing UTC even though I send it the current local time


I just ran this:

[MTAThread]
static void Main()
{
    var name = "\\foo.txt";
    var info = new FileInfo(name);
    using (info.Create()) { }
    info.Refresh();
    var createTime = info.CreationTime;
    var now = DateTime.Now;
    var delta = now - createTime;
    Debug.WriteLine(delta.ToString());
}

And got this output:

00:00:00.0140000

Which seems to be correct to me.


You can't modify the CreationTime of a file. It's set once and only once when the file is created. If you're willing to use P/Invoke to set the time, you can check out this similar question - c# - Change file LastWriteDate in Compact Framework

Instead of hacking the problem, though, you should fix the root cause. If there's an issue with the creation time of the file, I would consider checking your system's time settings (including timezone).

0

精彩评论

暂无评论...
验证码 换一张
取 消