init
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
|
||||
namespace DTS.Common.Utilities
|
||||
{
|
||||
/// <summary>
|
||||
/// Public utilty class for manipulating Unix timestamps
|
||||
/// Primarily exposed for the SDK
|
||||
/// </summary>
|
||||
public class PTP1588Timestamps
|
||||
{
|
||||
private const int MIN_VALID_TIMESTAMP_YEAR = 1990;
|
||||
/// <summary>
|
||||
/// tests time in seconds since 1,1,1970 to (unix time) to see whether the time should be valid or not
|
||||
/// this is used by TestMetaDataList to control whether to show unix time or not for a dataset in a viewer
|
||||
/// now it's also used by the CSV export to eliminate timestamps that occur before 1990
|
||||
/// this was done because of a dataset in http://manuscript.dts.local/f/cases/33199/
|
||||
/// which contained an invalid timestamp
|
||||
/// </summary>
|
||||
/// <param name="unixTimeStampSeconds">time in seconds since 1970-1-1</param>
|
||||
/// <returns>true if the value is valid or not</returns>
|
||||
public static bool IsValidTimeStamp(double unixTimeStampSeconds)
|
||||
{
|
||||
return UnixTimeStampToDateTimeLocal(unixTimeStampSeconds).Year > MIN_VALID_TIMESTAMP_YEAR;
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns DateTime object from Unix timestamp in seconds
|
||||
/// </summary>
|
||||
/// <param name="unixTimeStampSec"></param>
|
||||
/// <returns></returns>
|
||||
public static DateTime UnixTimeStampToDateTimeLocal(double unixTimeStampSec)
|
||||
{
|
||||
return UnixTimeStampToDateTimeLocal((decimal)unixTimeStampSec);
|
||||
}
|
||||
public static DateTime UnixTimeStampToDateTimeLocal(decimal unixTimeStampSec)
|
||||
{
|
||||
return UnitTimeStampToDateTimeLocal(unixTimeStampSec, (decimal)0);
|
||||
}
|
||||
public static DateTime UnitTimeStampToDateTimeLocal(double unixTimeStampSec, double ns)
|
||||
{
|
||||
var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
|
||||
dtDateTime = dtDateTime.AddSeconds(unixTimeStampSec).AddTicks(Convert.ToInt64(ns / 100));
|
||||
return dtDateTime.ToLocalTime();
|
||||
}
|
||||
public static DateTime UnitTimeStampToDateTimeLocal(decimal unixTimeStampSec, decimal ns)
|
||||
{
|
||||
var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
|
||||
dtDateTime = dtDateTime.AddSeconds(Convert.ToDouble(unixTimeStampSec)).AddTicks(Convert.ToInt64(ns / 100));
|
||||
return dtDateTime.ToLocalTime();
|
||||
}
|
||||
/// <summary>
|
||||
/// String representation in Unix timestamp is seconds past epoch
|
||||
/// </summary>
|
||||
public static string ToDateTimeString(double unixTimeStampSec, double ns) =>
|
||||
ToDateTimeString((decimal)unixTimeStampSec, (decimal)ns);
|
||||
|
||||
public static string ToDateTimeString(decimal unixTimeStampSec, decimal ns) =>
|
||||
$"{UnixTimeStampToDateTimeLocal(unixTimeStampSec).ToUniversalTime():yyyy/MM/dd HH:mm:ss}:{ns,9:000000000}";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user