Вычисление будущего времени эпохи в C#

Вы можете полностью избегать использования диалоговых окон! В некоторых программах есть минибуфер, который показывает ошибки и предупреждения. Наряду с этим, он также может спросить вас, где вы должны ввести то, что вы хотите сделать. Это довольно чистое и приятное решение, я предпочитаю его перед менубаром.

Но если вам действительно нужно использовать диалоговые окна, попробуйте следующее:

  • Одно предложение только для диалога
  • Не более двух или трех кнопок
  • Составьте текст читаемый внутри диалога (больше, чёрно-белый)
  • Скорее используйте один диалог, чем многократно многократно (совет: список)

Что я думаю о диалоговых окнах? В двух словах: они глупые и глупые вещи. Программы, которые их используют, встают у меня на пути и замедляют меня своими глупыми бессмысленными вопросами. Кроме того, часто программы, использующие диалоговые окна, довольно глупы.

15
задан UnkwnTech 25 May 2009 в 09:21
поделиться

4 ответа

This extension method should do the job:

private static double GetUnixEpoch(this DateTime dateTime)
{
    var unixTime = dateTime.ToUniversalTime() - 
        new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

    return unixTime.TotalSeconds;
}

And you can use it as such:

var unixTime1 = DateTime.Now.GetUnixEpoch(); // precisely now
var unixTime2 = (DateTime.Now + new TimeSpan(0, 10, 0)).GetUnixEpoch(); // 10 minutes in future

Note that you need to deal with all date-times in UTC (Universal Time), since that's how the start of the Unix Epoch is defined.

30
ответ дан 1 December 2019 в 00:00
поделиться

Есть интересный поворот, когда вы хотите узнать время эпохи Unix в .Net в системе Windows.

Почти для всех практических случаев и при условии, что текущее время прошло Unix Epoch, вы действительно могли бы принять

System.TimeSpan timeDifference = DateTime.UTCNow - 
            new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
long unixEpochTime = System.Convert.ToInt64(timeDifference.TotalSeconds);

Но,

Unix Epoch Time определяется как "... вам, вероятно, следует добавить дополнительные секунды к результату, полученному выше для приложений, которые полагаются на это. Вам нужно будет отслеживать количество секунд, которое нужно добавлять каждый раз, поскольку дополнительные секунды не объявляются заранее (2). Однако, поскольку определение Unix Epoch Time явно исключает дополнительные секунды, вы можете спокойно игнорировать это и просто пересчитать секунды из текущего времени UTC.

Иногда дополнительные секунды действительно вызывают программный хаос (5). Споры о том, следует ли сохранить или отменить эту практику, продолжаются (6) (7) (8).

Последняя дополнительная секунда на момент ответа произошла 1 июля 2012 г. (9) и вызвала проблемы для различных сайтов и приложений (10)

(1) http: //en.wikipedia .org / wiki / Unix_time

(2) http://en.wikipedia.org/wiki/Leap_second

(3) http://support.microsoft.

31
ответ дан 1 December 2019 в 00:00
поделиться

Whats the function you use to get the current time ?

Sure that takes a .NET DateTime parameter...

Surely it's just a simple matter of passing in a future DateTime to the function.

or doing a DateDiff in seconds between the current time and the future time and adding that on.

var dt = new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime();

var now = System.DateTime.Now.ToUniversalTime();
var future = new DateTime(2010, 1, 1).ToUniversalTime();

Console.WriteLine((now - dt).TotalSeconds);
Console.WriteLine((future - dt).TotalSeconds);
1
ответ дан 1 December 2019 в 00:00
поделиться

The basic solution:

  1. Take Current Time
  2. Add Offset to Future (10 Mins, in your example)
  3. Subtract Midnight of Jan 1st 1970
  4. Get the total number of seconds between the two

In c# (off the top of my head, untested):

DateTime myEpoch = DateTime.Now.Add( new TimeSpan(...) );
return myEpoch.Subtract( new DateTime(1970, 1, 1, 0, 0, 0) ).TotalSeconds;
0
ответ дан 1 December 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: