173 lines
5.3 KiB
C#
173 lines
5.3 KiB
C#
using System.Globalization;
|
|
|
|
namespace Kit.Helpers
|
|
{
|
|
public class WeekInfo
|
|
{
|
|
public int NumberOfYear { get; set; }
|
|
public DateTime StartDate { get; set; }
|
|
public DateTime EndDate { get; set; }
|
|
}
|
|
public static partial class SystemDateTimeExtensionMethods
|
|
{
|
|
public static string ToStringDateRus(this DateTime dt)
|
|
{
|
|
return dt.ToString("dd.MM.yyyy");
|
|
}
|
|
|
|
public static string ToStringDateTimeRus(this DateTime dt)
|
|
{
|
|
return dt.ToString("dd.MM.yyyy hh:mm");
|
|
}
|
|
|
|
public static string ToStringTimeRus(this DateTime dt)
|
|
{
|
|
return dt.ToString("hh:mm:ss");
|
|
}
|
|
|
|
|
|
public static string ToStringDateRus(this DateTime? dt)
|
|
{
|
|
if (dt == null) return String.Empty;
|
|
return dt.ToStringDateRus();
|
|
}
|
|
|
|
public static string ToStringDateTimeRus(this DateTime? dt)
|
|
{
|
|
if (dt == null) return String.Empty;
|
|
return dt.Value.ToStringDateTimeRus();
|
|
}
|
|
|
|
public static string ToStringTimeRus(this DateTime? dt)
|
|
{
|
|
if (dt == null) return String.Empty;
|
|
return dt.Value.ToStringTimeRus();
|
|
}
|
|
|
|
private static CultureInfo cultureRu = new CultureInfo("ru-Ru");
|
|
public static string GetStringMonthYear(this DateTime date)
|
|
{
|
|
return date.ToString("Y");
|
|
}
|
|
//public static DateTime Normolize(this DateTime currentValue)
|
|
//{
|
|
// return currentValue.Normolize(DateTime.MinValue, DateTime.Now);
|
|
//}
|
|
|
|
public static DateTime GetClearTime(this DateTime date)
|
|
{
|
|
return new DateTime(date.Year, date.Month, date.Day);
|
|
}
|
|
|
|
private static readonly long DatetimeMinTimeTicks =
|
|
(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks;
|
|
|
|
public static long ToJavaScriptMilliseconds(this DateTime dt)
|
|
{
|
|
return (long)((dt.ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 10000);
|
|
}
|
|
|
|
|
|
public static DateTime GetUtcFromDateTime(this DateTime dt, string timezene)
|
|
{
|
|
TimeZoneInfo tzf;
|
|
try
|
|
{
|
|
tzf = TimeZoneInfo.FindSystemTimeZoneById(timezene);
|
|
}
|
|
catch
|
|
{
|
|
tzf = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");
|
|
}
|
|
return TimeZoneInfo.ConvertTimeToUtc(dt, tzf);
|
|
}
|
|
|
|
public static DateTime GetDateTimeFromUtc(this DateTime dt, string timezene)
|
|
{
|
|
TimeZoneInfo tzf;
|
|
try
|
|
{
|
|
tzf = TimeZoneInfo.FindSystemTimeZoneById(timezene);
|
|
}
|
|
catch
|
|
{
|
|
tzf = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");
|
|
}
|
|
return TimeZoneInfo.ConvertTimeFromUtc(dt, tzf);
|
|
}
|
|
|
|
|
|
public static string ToStringOrEmpty(this DateTime? dt, string format)
|
|
{
|
|
if (dt == null) return String.Empty;
|
|
return dt.Value.ToString(format);
|
|
}
|
|
|
|
public static string ToStringOrEmpty(this DateTime? dt)
|
|
{
|
|
if (dt == null) return String.Empty;
|
|
return dt.Value.ToString("dd.MM.yyyy");
|
|
}
|
|
|
|
public static string ToShortDateStringRu(this DateTime value)
|
|
{
|
|
return value.ToString("dd.MM.yyyy");
|
|
}
|
|
|
|
public static string ToShortDateStringUniversal(this DateTime value)
|
|
{
|
|
return value.ToString("yyyy.MM.dd");
|
|
}
|
|
|
|
public static string ToStringDMYHMS(this DateTime value)
|
|
{
|
|
return value.ToString("dd.MM.yyyy hh:mm:ss");
|
|
}
|
|
|
|
public static string ToShortDateStringRu(this DateTime? value)
|
|
{
|
|
if (value == null) return String.Empty;
|
|
return value.Value.ToShortDateStringRu();
|
|
}
|
|
|
|
public static string ToShortDateStringUniversal(this DateTime? value)
|
|
{
|
|
if (value == null) return String.Empty;
|
|
return value.Value.ToShortDateStringUniversal();
|
|
}
|
|
|
|
public static string ToStringDMYHMS(this DateTime? value)
|
|
{
|
|
if (value == null) return String.Empty;
|
|
return value.Value.ToStringDMYHMS();
|
|
}
|
|
|
|
public static WeekInfo GetInfoWeek(this DateTime? value)
|
|
{
|
|
if (!value.HasValue) return null;
|
|
return value.Value.GetInfoWeek();
|
|
}
|
|
|
|
public static WeekInfo GetInfoWeek(this DateTime value)
|
|
{
|
|
var result = new WeekInfo();
|
|
DateTimeFormatInfo dfi = cultureRu.DateTimeFormat;
|
|
Calendar cal = dfi.Calendar;
|
|
|
|
result.NumberOfYear = cal.GetWeekOfYear(value, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
|
|
|
|
var dtStart = new DateTime(value.Year, 1, 1).AddDays(-(int)(new DateTime(value.Year, 1, 1).DayOfWeek - 1));
|
|
result.StartDate = dtStart.AddDays((result.NumberOfYear - 1) * 7);
|
|
result.EndDate = dtStart.AddDays(result.NumberOfYear * 7);
|
|
|
|
return result;
|
|
}
|
|
|
|
public static string GetMonthNameRP(this DateTime dt)
|
|
{
|
|
return dt.ToString("MMMMMMMMMMM", cultureRu).Replace("т", "та").Replace("тая", "тя").Replace("й", "я").Replace("ь", "я");
|
|
}
|
|
|
|
}
|
|
}
|