Перейти к содержимому

Как datetime преобразовать в int

  • автор:

DateTime to int c#

Вы можете перевести текущее время в секунды или миллисекунды. Общепринятая дата отсчёта при этом является 00:00:00 01.01.1970 по UTC.

DateTime dt = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now); DateTime dt1970 = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); TimeSpan tsInterval = dt.Subtract(dt1970); Int32 iSeconds = Convert.ToInt32(tsInterval .TotalSeconds); Int64 iMilliseconds = Convert.ToInt64(tsInterval .TotalMilliseconds); 

Отслеживать
25.1k 4 4 золотых знака 46 46 серебряных знаков 81 81 бронзовый знак
ответ дан 7 апр 2015 в 14:04
Пётр Сокольников Пётр Сокольников
21 3 3 бронзовых знака
Отслеживать
ответ дан 15 дек 2011 в 22:21
622 4 4 серебряных знака 12 12 бронзовых знаков

Если устраивает точность до секунд и диапазон дат +- примерно 68 лет от 2017, то работает это решение. По необходимости можно двигать диапазон дат, меняя в коде цифру 2017 на требуемую. На всякий случай обращаю внимание, что ConvertDateTimeToInt32 по-хорошему нуждается в некой логике обработки ошибок. Сейчас при выходе даты за границу рабочего диапазона, вернет неверное значение без генерации исключения.

using System; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < int now = ConvertDateTimeToInt32(DateTime.Now); Console.WriteLine("Сейчас " + ConvertInt32ToDateTime(now)); Console.WriteLine("Диапазон от " + ConvertInt32ToDateTime(int.MinValue)); Console.WriteLine("Диапазон до " + ConvertInt32ToDateTime(int.MaxValue)); int error = ConvertDateTimeToInt32(DateTime.MaxValue); Console.WriteLine("Error: вместо " + DateTime.MaxValue + " выдает " + ConvertInt32ToDateTime(error)); Console.ReadLine(); >public static int ConvertDateTimeToInt32(DateTime dt) < return (int)(dt - new DateTime(2017, 1, 1)).TotalSeconds; >public static DateTime ConvertInt32ToDateTime(int i) < return new DateTime(2017, 1, 1).AddSeconds(i); >> > 

Отслеживать
ответ дан 14 окт 2017 в 10:30
11 2 2 бронзовых знака

Нельзя преобразовать в данный тип. Можно только в String. Как ты собираешься преобразовывать точки в Int32? Это невозможно.

Отслеживать
ответ дан 15 дек 2011 в 15:15
690 7 7 золотых знаков 21 21 серебряный знак 51 51 бронзовый знак

Я уже решил вопрос, это делается вот так: TimeSpan t = (new DateTime.Now — new DateTime(1970, 1, 1, 0, 0, 0)); int data = (int)(t.TotalDays * 86400); И поверь это возможно 🙂

Как преобразовать значения ключей из int в datetime?

Не могу понять почему преобразовываются не все значения в словаре.

import datetime dat = today = datetime.date.today() for i in dat: if isinstance(i, datetime.date): # условие сравнения классов continue else : tod = today + datetime.timedelta(days=i) dat[tod] = dat.pop(i) print(dat)
  • Вопрос задан более двух лет назад
  • 208 просмотров

1 комментарий

Простой 1 комментарий

Convert. To Date Time Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Преобразует заданное значение к значению DateTime.

Перегрузки

При вызове этого метода всегда возникает исключение InvalidCastException.

Преобразует заданное строковое представление даты и времени в эквивалентное значение даты и времени.

При вызове этого метода всегда возникает исключение InvalidCastException.

Преобразует заданное строковое представление числа в эквивалентное значение даты и времени, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

При вызове этого метода всегда возникает исключение InvalidCastException.

Преобразует значение заданного объекта в объект DateTime, используя указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

При вызове этого метода всегда возникает исключение InvalidCastException.

При вызове этого метода всегда возникает исключение InvalidCastException.

Преобразует значение указанного объекта в объект DateTime.

При вызове этого метода всегда возникает исключение InvalidCastException.

При вызове этого метода всегда возникает исключение InvalidCastException.

При вызове этого метода всегда возникает исключение InvalidCastException.

При вызове этого метода всегда возникает исключение InvalidCastException.

При вызове этого метода всегда возникает исключение InvalidCastException.

Возвращает заданный объект DateTime; фактическое преобразование не производится.

При вызове этого метода всегда возникает исключение InvalidCastException.

При вызове этого метода всегда возникает исключение InvalidCastException.

При вызове этого метода всегда возникает исключение InvalidCastException.

ToDateTime(Single)

При вызове этого метода всегда возникает исключение InvalidCastException.

public: static DateTime ToDateTime(float value);
public static DateTime ToDateTime (float value);
static member ToDateTime : single -> DateTime
Public Shared Function ToDateTime (value As Single) As DateTime
Параметры

Значение с плавающей запятой одиночной точности, которое нужно преобразовать.

Возвращаемое значение

Это преобразование не поддерживается. Возвращаемое значение отсутствует.

Исключения

Это преобразование не поддерживается.

См. также раздел

Применяется к

ToDateTime(String)

Преобразует заданное строковое представление даты и времени в эквивалентное значение даты и времени.

public: static DateTime ToDateTime(System::String ^ value);
public static DateTime ToDateTime (string value);
public static DateTime ToDateTime (string? value);
static member ToDateTime : string -> DateTime
Public Shared Function ToDateTime (value As String) As DateTime
Параметры

Строковое представление даты и времени.

Возвращаемое значение

Дата и время, эквивалентные значению value , или даты и времени, эквивалентные DateTime.MinValue, если value имеет значение null .

Исключения

value является неправильно отформатированной строкой даты и времени.

Примеры

В следующем примере метод используется ToDateTime для преобразования различных строковых представлений дат и времени в DateTime значения.

using System; public class ConversionToDateTime < public static void Main() < string dateString = null; // Convert a null string. ConvertToDateTime(dateString); // Convert an empty string. dateString = String.Empty; ConvertToDateTime(dateString); // Convert a non-date string. dateString = "not a date"; ConvertToDateTime(dateString); // Try to convert various date strings. dateString = "05/01/1996"; ConvertToDateTime(dateString); dateString = "Tue Apr 28, 2009"; ConvertToDateTime(dateString); dateString = "Wed Apr 28, 2009"; ConvertToDateTime(dateString); dateString = "06 July 2008 7:32:47 AM"; ConvertToDateTime(dateString); dateString = "17:32:47.003"; ConvertToDateTime(dateString); // Convert a string returned by DateTime.ToString("R"). dateString = "Sat, 10 May 2008 14:32:17 GMT"; ConvertToDateTime(dateString); // Convert a string returned by DateTime.ToString("o"). dateString = "2009-05-01T07:54:59.9843750-04:00"; ConvertToDateTime(dateString); >private static void ConvertToDateTime(string value) < DateTime convertedDate; try < convertedDate = Convert.ToDateTime(value); Console.WriteLine("'' converts to  time.", value, convertedDate, convertedDate.Kind.ToString()); > catch (FormatException) < Console.WriteLine("'' is not in the proper format.", value); > > > // The example displays the following output: // '' converts to 1/1/0001 12:00:00 AM Unspecified time. // '' is not in the proper format. // 'not a date' is not in the proper format. // '05/01/1996' converts to 5/1/1996 12:00:00 AM Unspecified time. // 'Tue Apr 28, 2009' converts to 4/28/2009 12:00:00 AM Unspecified time. // 'Wed Apr 28, 2009' is not in the proper format. // '06 July 2008 7:32:47 AM' converts to 7/6/2008 7:32:47 AM Unspecified time. // '17:32:47.003' converts to 5/30/2008 5:32:47 PM Unspecified time. // 'Sat, 10 May 2008 14:32:17 GMT' converts to 5/10/2008 7:32:17 AM Local time. // '2009-05-01T07:54:59.9843750-04:00' converts to 5/1/2009 4:54:59 AM Local time. 
open System let convertToDateTime (value: string) = try let convertedDate = Convert.ToDateTime value printfn $"'' converts to  time." with :?FormatException -> printfn $"'' is not in the proper format." [] let main _ = let dateString = null // Convert a null string. convertToDateTime dateString // Convert an empty string. let dateString = String.Empty convertToDateTime dateString // Convert a non-date string. let dateString = "not a date" convertToDateTime dateString // Try to convert various date strings. let dateString = "05/01/1996" convertToDateTime dateString let dateString = "Tue Apr 28, 2009" convertToDateTime dateString let dateString = "Wed Apr 28, 2009" convertToDateTime dateString let dateString = "06 July 2008 7:32:47 AM" convertToDateTime dateString let dateString = "17:32:47.003" convertToDateTime dateString // Convert a string returned by DateTime.ToString("R"). let dateString = "Sat, 10 May 2008 14:32:17 GMT" convertToDateTime dateString // Convert a string returned by DateTime.ToString("o"). let dateString = "2009-05-01T07:54:59.9843750-04:00" convertToDateTime dateString 0 // The example displays the following output: // '' converts to 1/1/0001 12:00:00 AM Unspecified time. // '' is not in the proper format. // 'not a date' is not in the proper format. // '05/01/1996' converts to 5/1/1996 12:00:00 AM Unspecified time. // 'Tue Apr 28, 2009' converts to 4/28/2009 12:00:00 AM Unspecified time. // 'Wed Apr 28, 2009' is not in the proper format. // '06 July 2008 7:32:47 AM' converts to 7/6/2008 7:32:47 AM Unspecified time. // '17:32:47.003' converts to 5/30/2008 5:32:47 PM Unspecified time. // 'Sat, 10 May 2008 14:32:17 GMT' converts to 5/10/2008 7:32:17 AM Local time. // '2009-05-01T07:54:59.9843750-04:00' converts to 5/1/2009 4:54:59 AM Local time. 
Module ConversionToDateTime Public Sub Main() Dim dateString As String = Nothing ' Convert a null string. ConvertToDateTime(dateString) ' Convert an empty string. dateString = String.Empty ConvertToDateTime(dateString) ' Convert a non-date string. dateString = "not a date" ConvertToDateTime(dateString) ' Try to convert various date strings. dateString = "05/01/1996" ConvertToDateTime(dateString) dateString = "Tue Apr 28, 2009" ConvertToDateTime(dateString) dateString = "Wed Apr 28, 2009" ConvertToDateTime(dateString) dateString = "06 July 2008 7:32:47 AM" ConvertToDateTime(dateString) dateString = "17:32:47.003" ConvertToDateTime(dateString) ' Convert a string returned by DateTime.ToString("R"). dateString = "Sat, 10 May 2008 14:32:17 GMT" ConvertToDateTime(dateString) ' Convert a string returned by DateTime.ToString("o") dateString = "2009-05-01T07:54:59.9843750-04:00" ConvertToDateTime(dateString) End Sub Private Sub ConvertToDateTime(value As String) Dim convertedDate As Date Try convertedDate = Convert.ToDateTime(value) Console.WriteLine("'' converts to .", value, convertedDate) Catch e As FormatException Console.WriteLine("'' is not in the proper format.", value) End Try End Sub End Module ' The example displays the following output: ' '' converts to 1/1/0001 12:00:00 AM. ' '' is not in the proper format. ' 'not a date' is not in the proper format. ' '05/01/1996' converts to 5/1/1996 12:00:00 AM. ' 'Tue Apr 28, 2009' converts to 4/28/2009 12:00:00 AM. ' 'Wed Apr 28, 2009' is not in the proper format. ' '06 July 2008 7:32:47 AM' converts to 7/6/2008 7:32:47 AM. ' '17:32:47.003' converts to 5/30/2008 5:32:47 PM. ' 'Sat, 10 May 2008 14:32:17 GMT' converts to 5/10/2008 7:32:17 AM. ' '2009-05-01T07:54:59.9843750-04:00' converts to 5/1/2009 4:54:59 AM. 

Комментарии

Если value значение не null равно , возвращаемое значение является результатом вызова DateTime.Parse метода при value использовании сведений о форматировании в объекте DateTimeFormatInfo , инициализированном для текущего языка и региональных параметров. Аргумент value должен содержать представление даты и времени в одном из форматов, описанных в DateTimeFormatInfo разделе. Если значением параметра value является null , метод возвращает DateTime.MinValue.

Этот метод пытается полностью проанализировать value и избежать создания FormatException. Он завершает отсутствующие сведения о месяце, дне и году текущей датой. Если value содержит только дату и время, этот метод предполагает время полуночи. Все начальные, внутренние или конечные пробелы в value игнорируются.

Если вы предпочитаете не обрабатывать исключение в случае сбоя преобразования, вместо этого можно вызвать DateTime.TryParse метод . Он возвращает Boolean значение, указывающее, успешно ли выполнено преобразование.

См. также раздел

  • CurrentCulture
  • Синтаксический анализ строк даты и времени в .NET

Применяется к

ToDateTime(UInt16)

Этот API несовместим с CLS.

При вызове этого метода всегда возникает исключение InvalidCastException.

public: static DateTime ToDateTime(System::UInt16 value);
[System.CLSCompliant(false)] public static DateTime ToDateTime (ushort value);
[] static member ToDateTime : uint16 -> DateTime
Public Shared Function ToDateTime (value As UShort) As DateTime
Параметры

16-разрядное целое число без знака для преобразования.

Возвращаемое значение

Это преобразование не поддерживается. Возвращаемое значение отсутствует.

Исключения

Это преобразование не поддерживается.

См. также раздел

Применяется к

ToDateTime(String, IFormatProvider)

Преобразует заданное строковое представление числа в эквивалентное значение даты и времени, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

public: static DateTime ToDateTime(System::String ^ value, IFormatProvider ^ provider);
public static DateTime ToDateTime (string value, IFormatProvider provider);
public static DateTime ToDateTime (string? value, IFormatProvider? provider);
static member ToDateTime : string * IFormatProvider -> DateTime
Public Shared Function ToDateTime (value As String, provider As IFormatProvider) As DateTime
Параметры

Строка, содержащая дату и время, которые нужно преобразовать.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Дата и время, эквивалентные значению value , или даты и времени, эквивалентные DateTime.MinValue, если value имеет значение null .

Исключения

value является неправильно отформатированной строкой даты и времени.

Примеры

В следующем примере строковые представления значений даты преобразуются с ToDateTime помощью метода , используя IFormatProvider объект .

using System; using System.Globalization; public class Example < public static void Main() < Console.WriteLine("\n", "Date String", "Culture", "Result"); string[] cultureNames = < "en-US", "ru-RU","ja-JP" >; string[] dateStrings = < "01/02/09", "2009/02/03", "01/2009/03", "01/02/2009", "21/02/09", "01/22/09", "01/02/23" >; // Iterate each culture name in the array. foreach (string cultureName in cultureNames) < CultureInfo culture = new CultureInfo(cultureName); // Parse each date using the designated culture. foreach (string dateStr in dateStrings) < DateTime dateTimeValue; try < dateTimeValue = Convert.ToDateTime(dateStr, culture); // Display the date and time in a fixed format. Console.WriteLine("", dateStr, cultureName, dateTimeValue); > catch (FormatException e) < Console.WriteLine("", dateStr, cultureName, e.GetType().Name); > > Console.WriteLine(); > > > 
open System open System.Globalization printfn $"""\n""" let cultureNames = [ "en-US"; "ru-RU"; "ja-JP" ] let dateStrings = [ "01/02/09"; "2009/02/03"; "01/2009/03" "01/02/2009"; "21/02/09"; "01/22/09"; "01/02/23" ] // Iterate each culture name in the array. for cultureName in cultureNames do let culture = CultureInfo cultureName // Parse each date using the designated culture. for dateStr in dateStrings do try let dateTimeValue = Convert.ToDateTime(dateStr, culture) // Display the date and time in a fixed format. printfn $"""""" with :? FormatException as e -> printfn $"" printfn "" 
Imports System.Globalization Module Example Public Sub Main( ) Console.WriteLine("", "Date String", "Culture", "Result") Console.WriteLine() Dim cultureNames() As String = < "en-US", "ru-RU","ja-JP" >Dim dateStrings() As String = < "01/02/09", "2009/02/03", "01/2009/03", _ "01/02/2009", "21/02/09", "01/22/09", _ "01/02/23" >' Iterate each culture name in the array. For Each cultureName As String In cultureNames Dim culture As CultureInfo = New CultureInfo(cultureName) ' Parse each date using the designated culture. For Each dateStr As String In dateStrings Dim dateTimeValue As DateTime Try dateTimeValue = Convert.ToDateTime(dateStr, culture) ' Display the date and time in a fixed format. Console.WriteLine("", _ dateStr, cultureName, dateTimeValue) Catch e As FormatException Console.WriteLine("", _ dateStr, cultureName, e.GetType().Name) End Try Next Console.WriteLine() Next End Sub End Module ' The example displays the following output: ' Date String Culture Result ' ' 01/02/09 en-US 2009-Jan-02 ' 2009/02/03 en-US 2009-Feb-03 ' 01/2009/03 en-US 2009-Jan-03 ' 01/02/2009 en-US 2009-Jan-02 ' 21/02/09 en-US FormatException ' 01/22/09 en-US 2009-Jan-22 ' 01/02/23 en-US 2023-Jan-02 ' ' 01/02/09 ru-RU 2009-Feb-01 ' 2009/02/03 ru-RU 2009-Feb-03 ' 01/2009/03 ru-RU 2009-Jan-03 ' 01/02/2009 ru-RU 2009-Feb-01 ' 21/02/09 ru-RU 2009-Feb-21 ' 01/22/09 ru-RU FormatException ' 01/02/23 ru-RU 2023-Feb-01 ' ' 01/02/09 ja-JP 2001-Feb-09 ' 2009/02/03 ja-JP 2009-Feb-03 ' 01/2009/03 ja-JP 2009-Jan-03 ' 01/02/2009 ja-JP 2009-Jan-02 ' 21/02/09 ja-JP 2021-Feb-09 ' 01/22/09 ja-JP FormatException ' 01/02/23 ja-JP 2001-Feb-23 

Комментарии

Возвращаемое значение является результатом вызова метода в DateTime.Parse(String, IFormatProvider) value .

provider IFormatProvider— это экземпляр, который получает DateTimeFormatInfo объект . Объект DateTimeFormatInfo предоставляет сведения о формате value . Если provider имеет значение null , DateTimeFormatInfo используется для текущего языка и региональных параметров.

Если вы предпочитаете не обрабатывать исключение в случае сбоя преобразования, вместо этого можно вызвать DateTime.TryParse метод . Он возвращает Boolean значение, указывающее, успешно ли выполнено преобразование.

См. также раздел

Применяется к

ToDateTime(UInt64)

Этот API несовместим с CLS.

При вызове этого метода всегда возникает исключение InvalidCastException.

public: static DateTime ToDateTime(System::UInt64 value);
[System.CLSCompliant(false)] public static DateTime ToDateTime (ulong value);
[] static member ToDateTime : uint64 -> DateTime
Public Shared Function ToDateTime (value As ULong) As DateTime
Параметры

64-разрядное целое число без знака для преобразования.

Возвращаемое значение

Это преобразование не поддерживается. Возвращаемое значение отсутствует.

Исключения

Это преобразование не поддерживается.

См. также раздел

Применяется к

ToDateTime(Object, IFormatProvider)

Преобразует значение заданного объекта в объект DateTime, используя указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

public: static DateTime ToDateTime(System::Object ^ value, IFormatProvider ^ provider);
public static DateTime ToDateTime (object value, IFormatProvider provider);
public static DateTime ToDateTime (object? value, IFormatProvider? provider);
static member ToDateTime : obj * IFormatProvider -> DateTime
Public Shared Function ToDateTime (value As Object, provider As IFormatProvider) As DateTime
Параметры

Объект, реализующий интерфейс IConvertible.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Дата и время, эквивалентные значению value , или даты и времени, эквивалентные DateTime.MinValue, если value имеет значение null .

Исключения

value не является допустимым значением даты и времени.

value не реализует интерфейс IConvertible.

Преобразование не поддерживается.

Примеры

В следующем примере определяется поставщик пользовательского формата , метод которого GetFormat выводит в консоль сообщение о том, CustomProvider что он был вызван, а затем возвращает DateTimeFormatInfo объект языка и региональных параметров, имя которого было передано в качестве параметра конструктору класса. Каждый из этих CustomProvider объектов используется для преобразования элементов массива объектов в значения даты и времени. Выходные данные указывают, что CustomProvider объект используется при преобразовании только в том случае, если типом value параметра является String.

using System; using System.Globalization; public class Example < public static void Main() < string[] cultureNames = < "en-US", "hu-HU", "pt-PT" >; object[] objects = < 12, 17.2, false, new DateTime(2010, 1, 1), "today", new System.Collections.ArrayList(), 'c', "05/10/2009 6:13:18 PM", "September 8, 1899" >; foreach (string cultureName in cultureNames) < Console.WriteLine("culture:", cultureName); CustomProvider provider = new CustomProvider(cultureName); foreach (object obj in objects) < try < DateTime dateValue = Convert.ToDateTime(obj, provider); Console.WriteLine("--> ", obj, dateValue.ToString(new CultureInfo(cultureName))); > catch (FormatException) < Console.WriteLine("--> Bad Format", obj); > catch (InvalidCastException) < Console.WriteLine("--> Conversion Not Supported", obj); > > Console.WriteLine(); > > > public class CustomProvider : IFormatProvider < private string cultureName; public CustomProvider(string cultureName) < this.cultureName = cultureName; >public object GetFormat(Type formatType) < if (formatType == typeof(DateTimeFormatInfo)) < Console.Write("(CustomProvider retrieved.) "); return new CultureInfo(cultureName).GetFormat(formatType); >else < return null; >> > // The example displays the following output: // en-US culture: // 12 --> Conversion Not Supported // 17.2 --> Conversion Not Supported // False --> Conversion Not Supported // 1/1/2010 12:00:00 AM --> 1/1/2010 12:00:00 AM // (CustomProvider retrieved.) today --> Bad Format // System.Collections.ArrayList --> Conversion Not Supported // c --> Conversion Not Supported // (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 5/10/2009 6:13:18 PM // (CustomProvider retrieved.) September 8, 1899 --> 9/8/1899 12:00:00 AM // // hu-HU culture: // 12 --> Conversion Not Supported // 17.2 --> Conversion Not Supported // False --> Conversion Not Supported // 1/1/2010 12:00:00 AM --> 2010. 01. 01. 0:00:00 // (CustomProvider retrieved.) today --> Bad Format // System.Collections.ArrayList --> Conversion Not Supported // c --> Conversion Not Supported // (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 2009. 05. 10. 18:13:18 // (CustomProvider retrieved.) September 8, 1899 --> 1899. 09. 08. 0:00:00 // // pt-PT culture: // 12 --> Conversion Not Supported // 17.2 --> Conversion Not Supported // False --> Conversion Not Supported // 1/1/2010 12:00:00 AM --> 01-01-2010 0:00:00 // (CustomProvider retrieved.) today --> Bad Format // System.Collections.ArrayList --> Conversion Not Supported // c --> Conversion Not Supported // (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 05-10-2009 18:13:18 // (CustomProvider retrieved.) September 8, 1899 --> 08-09-1899 0:00:00 
open System open System.Globalization type CustomProvider(cultureName: string) = interface IFormatProvider with member _.GetFormat(formatType) = if formatType = typeof then printf "(CustomProvider retrieved.) " CultureInfo(cultureName).GetFormat formatType else null let cultureNames = [ "en-US"; "hu-HU"; "pt-PT" ] let objects: obj list = [ 12; 17.2; false; DateTime(2010, 1, 1); "today" System.Collections.ArrayList(); 'c' "05/10/2009 6:13:18 PM"; "September 8, 1899" ] for cultureName in cultureNames do printfn $" culture:" let provider = CustomProvider cultureName for obj in objects do try let dateValue = Convert.ToDateTime(obj, provider) printfn $" --> " with | :? FormatException -> printfn $" --> Bad Format" | :? InvalidCastException -> printfn $" --> Conversion Not Supported" printfn "" // The example displays the following output: // en-US culture: // 12 --> Conversion Not Supported // 17.2 --> Conversion Not Supported // False --> Conversion Not Supported // 1/1/2010 12:00:00 AM --> 1/1/2010 12:00:00 AM // (CustomProvider retrieved.) today --> Bad Format // System.Collections.ArrayList --> Conversion Not Supported // c --> Conversion Not Supported // (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 5/10/2009 6:13:18 PM // (CustomProvider retrieved.) September 8, 1899 --> 9/8/1899 12:00:00 AM // // hu-HU culture: // 12 --> Conversion Not Supported // 17.2 --> Conversion Not Supported // False --> Conversion Not Supported // 1/1/2010 12:00:00 AM --> 2010. 01. 01. 0:00:00 // (CustomProvider retrieved.) today --> Bad Format // System.Collections.ArrayList --> Conversion Not Supported // c --> Conversion Not Supported // (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 2009. 05. 10. 18:13:18 // (CustomProvider retrieved.) September 8, 1899 --> 1899. 09. 08. 0:00:00 // // pt-PT culture: // 12 --> Conversion Not Supported // 17.2 --> Conversion Not Supported // False --> Conversion Not Supported // 1/1/2010 12:00:00 AM --> 01-01-2010 0:00:00 // (CustomProvider retrieved.) today --> Bad Format // System.Collections.ArrayList --> Conversion Not Supported // c --> Conversion Not Supported // (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 05-10-2009 18:13:18 // (CustomProvider retrieved.) September 8, 1899 --> 08-09-1899 0:00:00 
Imports System.Globalization Module Example Public Sub Main() Dim cultureNames() As String = < "en-US", "hu-HU", "pt-PT" >Dim objects() As Object = < 12, 17.2, False, #1/1/2010#, "today", _ New System.Collections.ArrayList(), "c"c, _ "05/10/2009 6:13:18 PM", "September 8, 1899" >For Each cultureName As String In cultureNames Console.WriteLine(" culture:", cultureName) Dim provider As New CustomProvider(cultureName) For Each obj As Object In objects Try Dim dateValue As Date = Convert.ToDateTime(obj, provider) Console.WriteLine(" --> ", obj, _ dateValue.ToString(New CultureInfo(cultureName))) Catch e As FormatException Console.WriteLine(" --> Bad Format", obj) Catch e As InvalidCastException Console.WriteLine(" --> Conversion Not Supported", obj) End Try Next Console.WriteLine() Next End Sub End Module Public Class CustomProvider : Implements IFormatProvider Private cultureName As String Public Sub New(cultureName As String) Me.cultureName = cultureName End Sub Public Function GetFormat(formatType As Type) As Object _ Implements IFormatProvider.GetFormat If formatType Is GetType(DateTimeFormatInfo) Then Console.Write("(CustomProvider retrieved.) ") Return New CultureInfo(cultureName).GetFormat(formatType) Else Return Nothing End If End Function End Class ' The example displays the following output: ' en-US culture: ' 12 --> Conversion Not Supported ' 17.2 --> Conversion Not Supported ' False --> Conversion Not Supported ' 1/1/2010 12:00:00 AM --> 1/1/2010 12:00:00 AM ' (CustomProvider retrieved.) today --> Bad Format ' System.Collections.ArrayList --> Conversion Not Supported ' c --> Conversion Not Supported ' (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 5/10/2009 6:13:18 PM ' (CustomProvider retrieved.) September 8, 1899 --> 9/8/1899 12:00:00 AM ' ' hu-HU culture: ' 12 --> Conversion Not Supported ' 17.2 --> Conversion Not Supported ' False --> Conversion Not Supported ' 1/1/2010 12:00:00 AM --> 2010. 01. 01. 0:00:00 ' (CustomProvider retrieved.) today --> Bad Format ' System.Collections.ArrayList --> Conversion Not Supported ' c --> Conversion Not Supported ' (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 2009. 05. 10. 18:13:18 ' (CustomProvider retrieved.) September 8, 1899 --> 1899. 09. 08. 0:00:00 ' ' pt-PT culture: ' 12 --> Conversion Not Supported ' 17.2 --> Conversion Not Supported ' False --> Conversion Not Supported ' 1/1/2010 12:00:00 AM --> 01-01-2010 0:00:00 ' (CustomProvider retrieved.) today --> Bad Format ' System.Collections.ArrayList --> Conversion Not Supported ' c --> Conversion Not Supported ' (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 05-10-2009 18:13:18 ' (CustomProvider retrieved.) September 8, 1899 --> 08-09-1899 0:00:00 

Комментарии

Возвращаемое значение является результатом вызова IConvertible.ToDateTime метода базового типа value .

provider позволяет пользователю указывать сведения о преобразовании для конкретного языка и региональных параметров о содержимом value . Например, если value является String , который представляет дату, provider может предоставить сведения о конкретных языках и региональных параметрах о нотации, используемой для представления этой даты. provider участвует в преобразовании value , если тип value среды выполнения является String, или , если value является определяемым пользователем типом, реализация которого IConvertible.ToDateTime использует provider . Если тип value среды выполнения — String и provider , null CultureInfo используется объект , представляющий текущий язык и региональные параметры.

См. также раздел

Как перевести дату время в значение типа int? — страница 2

Я не знаю C#, но догадываюсь, что его DateTime — это двоичные данные. Тогда я бы почитал, что оно представляет и сделал бы простую конвертацию. В mql datetime, как известно, это количество секунд с 01.01.1970. Дата файла в винде, например, это количество единиц по 100 нс с 01.01.1601. Так что я перевел единицы в секунды и вычел разницу в секундах между 1601 и 1970 годами, учтя количество високосных лет.

Igor Makanu 2020.03.01 12:13 #13
Edgar Akhmadeev :
Я не знаю C#, но догадываюсь, что его DateTime — это двоичные данные.

в C# за что ни возьмись, все обьекты, включая и DateTime

вот в VS2019 проверил с выводом:

namespace ConsoleApp1 < class Program < static void Main(string[] args) < Console.Write("t keyword">int t = Convert.ToInt32(Console.ReadLine()); TimeSpan ts = TimeSpan.FromSeconds(t); DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc) + ts; Console.WriteLine(dt.ToLongDateString() + " : " + dt.ToLongTimeString()); Console.ReadKey(); > > >

код MQL чтобы узнать время в int ))

void OnStart() < int t =(int)TimeLocal(); Print("t comment">//t = 1583078979 >

Sergey Zhilinskiy 2020.03.01 16:36 #14
int unixTime = ( int ) ( DateTime . UtcNow — new DateTime ( 1970 , 1 , 1 ) ) . TotalSeconds ;
ROMAN KIVERIN 2020.03.02 01:34 #15
Igor Makanu :

в C# за что ни возьмись, все обьекты, включая и DateTime

вот в VS2019 проверил с выводом:

код MQL чтобы узнать время в int ))

Sergey Zhilinskiy :
int unixTime = ( int ) ( DateTime . UtcNow — new DateTime ( 1970 , 1 , 1 ) ) . TotalSeconds ;

Спасибо дорогие друзья. Премного благодарен. Без Вашей помощи никак. Ждём Тестера. 🙂

Edgar Akhmadeev :
Я не знаю C#, но догадываюсь, что его DateTime — это двоичные данные. Тогда я бы почитал, что оно представляет и сделал бы простую конвертацию. В mql datetime, как известно, это количество секунд с 01.01.1970. Дата файла в винде, например, это количество единиц по 100 нс с 01.01.1601. Так что я перевел единицы в секунды и вычел разницу в секундах между 1601 и 1970 годами, учтя количество високосных лет.

Да я тоже толком не разбираюсь. Так пальцем тыкаю наугад по клавиатуре. Спасибо есть друзья, которые могут вовремя помочь.

Всем Спасибо за уделённое внимание. Всего, всего, всего Вам самого,самого.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *