У меня есть этот код в java, который посвящен SystemTime:
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");
//Gets the time of the boardtime object in milliseconds
public long getMs() {
return super.getTimeInMillis();
}
//Sets the time of the boardtime object in milliseconds
public void setMs(long ms) {
super.setTimeInMillis(ms);
}
Я попытался преобразовать его в С#: для первой части я использовал класс DateTimeFormatInfo:
private static DateTimeFormatInfo sdf = new DateTimeFormatInfo();
для получения системного времени в миллисекундах я использовал TimeSpan:
long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
Я не знаю, правильно или нет, что я делал до сих пор, но я не могу найти эквивалент С# для setTime.
Это то, что я сделал до сих пор:
private static DateTimeFormatInfo sdf = new DateTimeFormatInfo();
public long getMs(){
long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
return milliseconds;
}
public void setMs(long ms){
}
заранее спасибо
Вы пробовали код в этой статье? http://msdn.microsoft.com/en-us/library/ms172517(v=vs.90).aspx
Он использует платформу invoke для доступа к функциям Seredll GetSystemTime и SetSystemTime.
Ваш getMs(), как определено выше, возвращает число MS с 01.01.00 (см. Здесь). На этой странице MSDN, чтобы установить системное время с С#, вам нужно построить структуру SYSTEMTIME, инициализировать ее правильно и передать ее функции SetSystemTime(). На странице представлен простой пример, показывающий, как это сделать. Как мы построим правильную структуру SYSTEMTIME? Можно использовать функцию FileTimeToSystemTime(), которая принимает количество тиков с 1/1/1601 (обратите внимание на другой год) и преобразует ее в SYSTEMTIME.
Итак, одним словом:
Если будет более простой способ, мне было бы интересно узнать. Надеюсь это поможет!
Если вы просто хотите установить/получить время с миллисекунд, вы можете сделать это с помощью С# TimeSpan:
private TimeSpan time
public void setMs(long ms)
{
this.time = TimeSpan.FromMilliseconds(ms);
}
public long getMs()
{
return this.time.TotalMilliseconds;
}
Если вы хотите выделить время в миллисекундах, используйте метод TimeSpan.TotalMilliseconds, построенный из объекта DateTime
используя TimeSpan.FromTicks. Создайте объект DateTime и манипулируйте меткой времени, используя миллисекунды, затем используйте предопределенный метод DateTime.AddMilliseconds, добавив соответственно. вычитание миллисекунд:
var now = DateTime.Now; // or new DateTime(2014, 05, 29, 21, 27, 05);
Console.WriteLine(now.ToString("yyyy-MM-dd HH.mm.ss"));
var future = now.AddMilliseconds(1234567);
var past = now.AddMilliseconds(-1234567);
Console.WriteLine(future.ToString("yyyy-MM-dd HH.mm.ss"));
Console.WriteLine(past.ToString("yyyy-MM-dd HH.mm.ss"));
// get milliseconds from current date time object using TimeSpan.TotalMilliseconds
var ts = TimeSpan.FromTicks(now.Ticks);
Console.WriteLine(ts.TotalMilliseconds);
Выход:
2014-05-29 21.27.05
2014-05-29 21.47.40
2014-05-29 21.06.31
63536995625703,1
Взгляните на эту статью MSDN о пользовательских строках форматирования даты и времени для более настраиваемых параметров форматирования даты и времени для объекта DateTime
.