|
|
My question is how to convert the returned Timestamp into a DateTime value in C# ... I can handle the values fine within MySql.
|
|
|
|
|
Look at the documentation for C# DateTime types. It explains which conversions it accepts (e.g. strings, seconds, [D,M,Y] etc.). If it cannot accept the value returned from MySQL then you will need to convert that value into one that it can handle.
|
|
|
|
|
The following statement in the article that you cited tells me enough to give a reasonable hint.
Quote: Conversion of TIME or DATETIME values to numeric form (for example, by adding +0) results in a double-precision value with a microseconds part of .000000
The TIMESTAMP is a double-precision floating point number, which is interpreted as follows.
- The fractional part, if nonzero, is the number of microseconds in the time.
- The integral part is always present, is a Unix time.
With these two bits of information, you can use the following function, which you can implement as a static method, to convert the Unix timestamp.
public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
return dtDateTime;
}
The above is taken from the accepted answer to How can I convert a Unix timestamp to DateTime and vice versa?. Though I haven't tested it, I suspect it is at least essentially correct.
Since the input is double precision, you can amend it to handle the decimal part, which should be converted to ticks, where one tick is equal to 100 nanoseconds. The resulting tick count should then be added to the .Ticks property on the DateTime to get the final answer.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
I think this message was meant for the OP rather than me.
|
|
|
|
|
You are correct. Thank you for calling that to my attention!
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
The following statement in the article that you cited tells me enough to give a reasonable hint.
<blockquote class="quote"><div class="op">Quote:</div>Conversion of TIME or DATETIME values to numeric form (for example, by adding +0) results in a double-precision value with a microseconds part of .000000</blockquote>
The TIMESTAMP is a double-precision floating point number, which is interpreted as follows.
<ul>
<li>The fractional part, if nonzero, is the number of microseconds in the time.</li>
<li>The integral part is always present, is a Unix time.</li>
</ul>
With these two bits of information, you can use the following function, which you can implement as a static method, to convert the Unix timestamp.
<pre>public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
return dtDateTime;
}
The above is taken from the accepted answer to How can I convert a Unix timestamp to DateTime and vice versa?. Though I haven't tested it, I suspect it is at least essentially correct.
Since the input is double precision, you can amend it to handle the decimal part, which should be converted to ticks, where one tick is equal to 100 nanoseconds. The resulting tick count should then be added to the .Ticks property on the DateTime to get the final answer.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
Hello,
I'm trying to address a windows library from within my C#Code.
Want to search a windows library from within C# and return the result to my application.
Just don't know how to begin...
Anyone some ideas?
|
|
|
|
|
This is not a good question - we cannot work out from that little what you are trying to do.
Remember that we can't see your screen, access your HDD, or read your mind - we only get exactly what you type to work with.
So what are you trying to search a "Windows library" for? What results are you expecting?
Please, try to explain in as much detail as you can what you are trying to achieve, what you have tried, where you are stuck - the better the information you give us, the better we can help you!
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Microsoft have some C++ examples available:
Using Libraries in your Program | Microsoft Docs[^]
There doesn't seem to be a C# wrapper available. You can either write your own in Managed C++, or P/Invoke the relevant functions.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I am new to programming and learning on youtube. I have question in following code:
using System;
class test
{
public static void Main()
{
int i = 0;
abc(ref i);
Console.WriteLine(i);
Console.ReadLine();
}
public static int abc(ref int j)
{
j = 100;
return j;
}
}
After running this, I am getting answer 100.
But when I change return statement as "return 0", again answer is 100. May I know why? If I am returning 0, method should return 0 value to variable i no? I am new to programming so please explain me in very details. Thank you so much.
|
|
|
|
|
It has to do with variable scope. You are passing by Reference which is different than passing by value. You are basically allowing the function ABC to modify the actual variable i.
For this to act as you expect you need to assign the return value from ABC to i like this: i = abc(i) and remove the Ref keyword. There is a little more to it but see below.
Look here at a StackOverflow answer[^] and here at the Microsoft Ref keyword.[^]
Jack of all trades, master of none, though often times better than master of one.
|
|
|
|
|
Thank you so much for your reply. But my question is that when i write statement "return j", it is returning value of j. This part I got but when I write "return 0", why it is not giving answer as 0? As I am new, I am not getting this. Please explain me in a little bit detail. Thank you
|
|
|
|
|
The problem you have is that you are mixing two things up here. Let's break this method down:
public static int abc(ref int j)
{
j = 100;
return 0;
} The method signature indicates that you are accepting a variable that you are going to populate in this method. It also indicates that you are returning a type of int as the return type from the method (the bit that goes int abc ). This means that you have told the compiler that you have two methods of setting values here. Now, suppose you changed your call to this:
int output = abc(ref i); You now have two values coming back from the method. The value in output would be 0, as that is the value coming back from the return statement. The value in i would be 100 because that is the value you set j to in abc .
This space for rent
|
|
|
|
|
Thank you so much for your helpful explaination. Now I got the actual concept of return statement. Thank you so much.
|
|
|
|
|
You are most welcome.
This space for rent
|
|
|
|
|
You aren't actually using the return statement in your code. What is happening here is that the ref statement is the thing that is actually setting the value of the variable. If you want some fun, try to predict what the value of this statement is (changing your code slightly):
int i = 0;
i = abc(ref i);
Edited with the correct statement on line 2.
This space for rent
modified 11-Sep-18 14:47pm.
|
|
|
|
|
Fortunately, you'll get a compiler error:
Error CS1510 A ref or out value must be an assignable variable
But ... back in the seventies I worked with a FORTRAN compiler that didn't issue an error, and would happily change the value of constants. Imagine if this C# code worked:
void xx(ref int i)
{
i += 10;
}
static int main()
{
int i = 666;
xx(666);
int j = 666;
Console.WriteLine($"{i}, {j}");
} And printed 666, 676
Now debug that in a 1,000,000 line project without an IDE!
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Doh, it was meant to be
i = abc(ref i); That's what I get when I type directly into the code editor.
This space for rent
|
|
|
|
|
|
This is not an error, is a Conflict Information.
Search the error in the Error List with the red icon on the left (I didn't download the source, so I didn't revise more than I told it).
|
|
|
|
|
Dear All,
i want to encrypt / decrypt a string that can be of any length to maximum 10 random characters only,
i tried a lots of encryption / decryption algorithms but all gives very long encrypted string, appreciate if anyone can share to limit the encryption string to only 10 characters provided these characters to be random each time.
Many Thanks in Advance.....
|
|
|
|
|
Can't be done.
Think about this. Encryption means that not a single bit of data can be lost. Every bit of it must be represented. Encryption is lossless.
Now, you said you want to pack any string of any length into no more than 80 bits. How on earth are you going to pack a "string of any length", lets just say a 3MB string, into 80 bits?
Encryption is NOT compression.
You may be able to cryptographic HASH a string into 80 bits, though that's going to limit your possible hash values. With such few bits (80 of them), the chance of a collision (2 strings coming up with the same hash value) is higher than normal. There is no way to reverse the process and get the original string back. A cryptographic hash cannot be reversed.
|
|
|
|
|
One-time-pads.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
You cannot encrypt a string to any specific maximum length: when you encrypt a string you are adding information not compressing it - and the encrypted data is likely to be less compressible than the original, or the encryption method includes too much repetitiveness in it;s output and may be easily cracked!
You can make a value from your input which has a fixed size, but that is by a process called Hashing - which is similar to encryption but is not reversible; you cannot retrieve the original input from a hashed value, while you can with encrypted data.
Why do you think you need this? What are you trying to do? There may be a better way ...
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|