Как datetime перевести в строку
Перейти к содержимому

Как datetime перевести в строку

  • автор:

Как преобразовать строку в дату? 20180819 -> 2018-08-19

Направьте на правильный путь, а то я совсем запутался. Есть строка text = «20180819» , а на выходе хочу получить 2018-08-19 Чтобы потом создать иерархию папок с такими названиями: 2018/2018-08/2018-08-19 Использую библиотеку datetime, но у меня получается.

Отслеживать
77k 6 6 золотых знаков 57 57 серебряных знаков 123 123 бронзовых знака
задан 17 сен 2018 в 16:04
23 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

В общих случаях работы с датой, получение из строки и обратно, делается так:

import time dt = time.strptime('20180819', '%Y%m%d') print(time.strftime('%Y-%m-%d', dt)) # -> '2018-08-19' 

создать папки можно так:

from pathlib import Path path_str = time.strftime('%Y/%Y-%m/%Y-%m-%d', dt) Path(path_str).mkdir(parents=True, exist_ok=True) 

однако в данном конкретном случае, можно обойтись срезами

s = '20180819' year = s[:4] month = s[4:6] day = s[6:] print(f'/-/--') 

Отслеживать
ответ дан 17 сен 2018 в 16:26
1,438 6 6 серебряных знаков 16 16 бронзовых знаков

import datetime as DT text = "20180819" date = DT.datetime.strptime(text, '%Y%m%d').date() print(date) # 2018-08-19 print(str(date)) # 2018-08-19 print(date.strftime('%Y-%m-%d')) # 2018-08-19 

Чтобы сгенерировать путь, можно так извернуться:

import os dirs_path = '/'.join(date.strftime(fmt) for fmt in ['%Y', '%Y-%m', '%Y-%m-%d']) print(dirs_path) # 2018/2018-08/2018-08-19 # Генерация пути используя системные разделители dirs_path = os.path.sep.join(date.strftime(fmt) for fmt in ['%Y', '%Y-%m', '%Y-%m-%d']) print(dirs_path) # 2018\2018-08\2018-08-19 

Чтобы создать папки:

# Создаем если такого пути нет if not os.path.exists(dirs_path): os.makedirs(dirs_path) 

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

Чтобы анализировать строки для преобразования их в объекты DateTime, нужно указать, как значения даты и времени представлены в текстовом формате. Для различных языков и региональных параметров значения дня, месяца и года приводятся в разном порядке. В некоторых представлениях времени используются 24-часовые часы, в других — «AM» и «PM». Некоторым приложениям требуется только дата. В других — только время. Остальные должны указывать как дату, так и время. Методы преобразования строк в объекты DateTime позволяют предоставлять подробные сведения о требуемых форматах и элементах дат и времени, которые необходимы для вашего приложения. Есть три подзадачи для правильного преобразования текста в DateTime:

  1. Укажите требуемый формат текста, представляющего дату и время.
  2. Вы можете указать язык и региональные параметры для формата даты и времени.
  3. Вы можете указать, как отсутствующие компоненты в текстовом представлении задаются в дату и время.

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

Текущий объект DateTimeFormatInfo обеспечивает более точный контроль над тем, как текст должен интерпретироваться в качестве даты и времени. DateTimeFormatInfo Свойства объекта описывают разделители даты и времени, имена месяцев, дней и эпох, а также формат для обозначений «AM» и «PM». Объект , CultureInfo возвращаемый параметром CultureInfo.CurrentCulture , имеет CultureInfo.DateTimeFormat свойство , представляющее текущий язык и региональные параметры. Если требуется задать определенные язык и региональные параметры или настраиваемые параметры, укажите для метода анализа параметр IFormatProvider. Для параметра IFormatProvider следует указать объект CultureInfo, представляющий язык и региональные параметры, или объект DateTimeFormatInfo.

Текст, представляющий дату или время, может отсутствовать некоторые сведения. Например, большинство пользователей будет считать, что дата «12 марта» относится к текущему году. Аналогичным образом, «март 2018 г.» представляет месяц март 2018 года. Текст, представляющий время, часто содержит только часы, минуты и обозначение AM/PM. При помощи методов анализа эти отсутствующие данные обрабатываются с использованием обоснованных значений по умолчанию:

  • если указано только время, в части даты используется текущая дата;
  • если указана только дата, в части времени задается полночь;
  • если в дате не указан год, используется текущий год;
  • Если день месяца не указан, используется первый день месяца.

Если в строке есть дата, она должна включать месяц и день или год. Если указано время, значение должно содержать час и минуты или обозначение AM либо PM.

Чтобы переопределить эти значения по умолчанию, можно задать константу NoCurrentDateDefault. Если вы используете эту константу, для всех отсутствующих параметров года, месяца или дня устанавливается значение 1 . Это демонстрирует последний пример, в котором применяется Parse.

Помимо компонента даты и времени строковое представление даты и времени может содержать смещение, которое указывает, насколько время отличается от универсального синхронизированного времени (UTC). Например, строка «14/02/2007 5:32:00 -7: 00» определяет время, которое на семь часов меньше, чем UTC. Если в строковом представлении времени не задано смещение, то синтаксический анализ возвращает объект DateTime, свойство Kind которого имеет значение DateTimeKind.Unspecified. Если указано смещение, при синтаксическом анализе возвращается объект со свойством DateTimeKind , равным DateTimeKind.Local. Его значение также корректируется в соответствии с местным часовой поясом компьютера. Это поведение можно изменить, указав для метода анализа значение DateTimeStyles.

Поставщик формата также используется для интерпретации неоднозначных числовых дат. Неясно, какие компоненты даты, представленные строкой «02/03/04», являются месяцем, днем и годом. Такие компоненты интерпретируются согласно их порядку расположения в схожих форматах даты в поставщике формата.

Parse

Ниже приведен пример использования метода DateTime.Parse для преобразования string в DateTime. В этом примере используются язык и региональные параметры, связанные с текущим потоком. Если объект , связанный CultureInfo с текущим языком FormatException и региональными параметрами, не может проанализировать входную строку, создается исключение .

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

Эти примеры для C# и Visual Basic см. в репозитории с документацией GitHub.

string dateInput = "Jan 1, 2009"; var parsedDate = DateTime.Parse(dateInput); Console.WriteLine(parsedDate); // Displays the following output on a system whose culture is en-US: // 1/1/2009 00:00:00 
Dim MyString As String = "Jan 1, 2009" Dim MyDateTime As DateTime = DateTime.Parse(MyString) Console.WriteLine(MyDateTime) ' Displays the following output on a system whose culture is en-US: ' 1/1/2009 00:00:00 

Кроме того, вы можете явно определить язык и региональные параметры, соглашения о форматировании для которых используются при анализе строки. Укажите один из стандартных объектов DateTimeFormatInfo, возвращенных свойством CultureInfo.DateTimeFormat. В приведенном ниже примере поставщик формата используется для анализа строки на немецком языке в DateTime. Для представления языка и региональных параметров de-DE создается CultureInfo. Этот объект CultureInfo обеспечивает успешный анализ определенной строки. Этот процесс исключает любой параметр в .CurrentCultureCurrentThread

var cultureInfo = new CultureInfo("de-DE"); string dateString = "12 Juni 2008"; var dateTime = DateTime.Parse(dateString, cultureInfo); Console.WriteLine(dateTime); // The example displays the following output: // 6/12/2008 00:00:00 
Dim MyCultureInfo As New CultureInfo("de-DE") Dim MyString As String = "12 Juni 2008" Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo) Console.WriteLine(MyDateTime) ' The example displays the following output: ' 6/12/2008 00:00:00 

Однако можно использовать перегрузки метода для Parse указания настраиваемых поставщиков форматов. Метод Parse не поддерживает синтаксический анализ нестандартных форматов. Вместо этого используйте метод ParseExact для анализа даты и времени, выраженных в нестандартном формате.

В следующем примере перечисление DateTimeStyles используется для указания того, что текущие сведения о дате и времени не должны добавляться в DateTime для неуказанным полям.

var cultureInfo = new CultureInfo("de-DE"); string dateString = "12 Juni 2008"; var dateTime = DateTime.Parse(dateString, cultureInfo, DateTimeStyles.NoCurrentDateDefault); Console.WriteLine(dateTime); // The example displays the following output if the current culture is en-US: // 6/12/2008 00:00:00 
Dim MyCultureInfo As New CultureInfo("de-DE") Dim MyString As String = "12 Juni 2008" Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo, DateTimeStyles.NoCurrentDateDefault) Console.WriteLine(MyDateTime) ' The example displays the following output if the current culture is en-US: ' 6/12/2008 00:00:00 

ParseExact

Метод DateTime.ParseExact позволяет преобразовать строку в объект DateTime, если она соответствует одному из указанных шаблонов строк. При передаче в этот метод строки, которая не является одной из указанных форм, FormatException возникает исключение . Можно задать один из стандартных описателей формата даты и времени или сочетание пользовательских описателей формата. Используя настраиваемые описатели формата, можно создать пользовательскую строку распознавания. Описание описателей см. в статьях о стандартных строках формата даты и времени и настраиваемых строках формата даты и времени.

В приведенном ниже примере в метод DateTime.ParseExact передается переназначенный для анализа строковый объект. Затем следует описатель формата, который сопровождается объектом CultureInfo. С помощью этого метода ParseExact можно анализировать только строки, соответствующие шаблону полной даты для языка и региональных параметров en-US .

var cultureInfo = new CultureInfo("en-US"); string[] dateStrings = < " Friday, April 10, 2009", "Friday, April 10, 2009" >; foreach (string dateString in dateStrings) < try < var dateTime = DateTime.ParseExact(dateString, "D", cultureInfo); Console.WriteLine(dateTime); >catch (FormatException) < Console.WriteLine("Unable to parse ''", dateString); > > // The example displays the following output: // Unable to parse ' Friday, April 10, 2009' // 4/10/2009 00:00:00 
Dim MyCultureInfo As New CultureInfo("en-US") Dim MyString() As String = For Each dateString As String In MyString Try Dim MyDateTime As DateTime = DateTime.ParseExact(dateString, "D", MyCultureInfo) Console.WriteLine(MyDateTime) Catch e As FormatException Console.WriteLine("Unable to parse ''", dateString) End Try Next ' The example displays the following output: ' Unable to parse ' Friday, April 10, 2009' ' 4/10/2009 00:00:00 

При каждой перегрузке методов Parse и ParseExact также используется параметр IFormatProvider, который предоставляет сведения о языке и региональных параметрах для форматирования строки. Объект IFormatProvider — это CultureInfo объект, представляющий стандартный язык и региональные параметры, или DateTimeFormatInfo объект, возвращаемый свойством CultureInfo.DateTimeFormat . Кроме того, в методе ParseExact используется дополнительная строка или аргумент массива строк для определения одного или нескольких настраиваемых форматов даты и времени.

См. также

  • Анализ строк
  • Типы форматирования
  • Преобразование типов в .NET
  • Стандартные форматы даты и времени
  • Строки настраиваемых форматов даты и времени

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Документация

Преобразование между массивами datetime, числами и текстом

Обзор

datetime лучший тип данных для представления моментов времени. datetime значения имеют гибкие форматы отображения и до точности наносекунды и могут составлять часовые пояса, летнее время и секунды прыжка. Однако, если вы работаете с кодом, созданным в MATLAB ® R2014a или ранее, или если вы совместно используете код с другими, которые используют такую версию, вы можете должны быть работать с датами и время, сохраненное в одном из этих трех форматов:

  • Строка даты — вектор символов.
Example: Thursday, August 23, 2012 9:45:44.946 AM
Example: [2012 8 23 9 45 44.946]
Example: 7.3510e+005

Строки даты, векторы и числа могут храниться как массивы значений. Сохраните несколько строк даты в массиве ячеек из символьных векторов, несколько векторов даты в m — 6 матриц и несколько последовательных чисел даты в матрице.

Можно преобразовать любой из этих форматов к datetime массив с помощью datetime функция. Если ваш существующий код MATLAB ожидает последовательный номер даты или вектор даты, используйте datenum или datevec функции, соответственно, чтобы преобразовать datetime массив к ожидаемому формату данных. Преобразовывать datetime массив к векторам символов, используйте char или cellstr функции.

Начиная в R2016b, также можно преобразовать datetime массив к массиву строк с string функция.

Преобразование между Datetime и векторами символов

Строка даты может быть вектором символов, состоявшим из полей, связанных с определенной датой и/или время. Существует несколько способов представлять даты и времена в текстовом формате. Например, все следующее является векторами символов, представляющими 23 августа 2010 в 16:35:42:

'23-Aug-2010 04:35:06 PM' 'Wednesday, August 23' '08/23/10 16:35' 'Aug 23 16:35:42.946'

Строка даты включает символы, которые разделяют поля, такие как дефис, пробел и двоеточие, используемое здесь:

d = '23-Aug-2010 16:35:42' 

Преобразуйте одну или несколько строк даты в datetime массив с помощью datetime функция. Для лучшей эффективности задайте формат входных строк даты как вход к datetime .

Примечание

Спецификаторы, что datetime использование, чтобы описать форматы даты и времени отличается от спецификаторов что datestr , datevec , и datenum функции принимают.

Для полного списка спецификаторов формата даты и времени смотрите Format свойство datetime тип данных.

t = datetime(d,'InputFormat','dd-MMM-yyyy HH:mm:ss')
t = datetime 23-Aug-2010 16:35:42

Несмотря на то, что строка даты, d , и datetime скаляр, t , выглядите подобными, они не равны. Просмотрите размер и тип данных каждой переменной.

whos d t
Name Size Bytes Class Attributes d 1x20 40 char t 1x1 17 datetime

Преобразуйте datetime массив к использованию вектора символов char или cellstr . Например, преобразуйте текущую дату и время к метке времени, чтобы добавить к имени файла.

t = datetime('now','Format','yyyy-MM-dd''T''HHmmss')
t = datetime 2017-01-03T151105
S = char(t); filename = ['myTest_',S]
filename = 'myTest_2017-01-03T151105'

Преобразование между массивами datetime и массивами строк

Начиная в R2016b, можно использовать string функция, чтобы создать массив строк. Если массив строк содержит строки даты, то можно преобразовать массив строк в datetime массив с datetime функция. Точно так же можно преобразовать datetime массив к массиву строк с string функция.

Преобразуйте массив строк. MATLAB отображает строки в двойных кавычках. Для лучшей эффективности задайте формат входных строк даты как вход к datetime .

str = ["24-Oct-2016 11:58:17"; "19-Nov-2016 09:36:29"; "12-Dec-2016 10:09:06"]
str = 3×1 string array "24-Oct-2016 11:58:17" "19-Nov-2016 09:36:29" "12-Dec-2016 10:09:06"
t = datetime(str,'InputFormat','dd-MMM-yyyy HH:mm:ss')
t = 3×1 datetime array 24-Oct-2016 11:58:17 19-Nov-2016 09:36:29 12-Dec-2016 10:09:06

Преобразуйте datetime значение к строке.

t = datetime('25-Dec-2016 06:12:34'); str = string(t)
str = "25-Dec-2016 06:12:34"

Преобразование между векторами Datetime и даты

Вектор даты 1 6 вектор из чисел с двойной точностью. Элементы вектора даты с целочисленным знаком, за исключением элемента секунд, который может быть дробным. Временные стоимости описываются в 24-часовом обозначении. Нет никакой установки AM или PM.

Вектор даты располагается в следующем порядке:

year month day hour minute second

Следующий вектор даты представляет 10:45:07 24 октября 2012:

[2012 10 24 10 45 07]

Преобразуйте один или несколько векторов даты в datetime массив с помощью datetime функция:

t = datetime([2012 10 24 10 45 07])
t = datetime 24-Oct-2012 10:45:07

Вместо использования datevec чтобы извлечь компоненты значений datetime, используйте функции такой как year , month , и day вместо этого:

y = year(t)
y = 2012

В качестве альтернативы получите доступ к соответствующему свойству, такому как t.Year для значений года:

y = t.Year
y = 2012

Преобразование последовательных чисел даты в Datetime

Последовательный номер даты представляет календарную дату как номер дней, который передал начиная с установленной основной даты. В MATLAB последовательная дата номер 1 1 января, 0000.

Последовательное время может представлять части дней, начинающихся в полночь; например, 18:00 равняется 0,75 последовательным дням. Так вектор символов ’31-Oct-2003, 6:00 PM’ в MATLAB дата номер 731885.75.

Преобразуйте одно или несколько последовательных чисел даты в datetime массив с помощью datetime функция. Задайте тип номера даты, который преобразуется:

t = datetime(731885.75,'ConvertFrom','datenum')
t = datetime 31-Oct-2003 18:00:00

Преобразование массивов datetime в числовые значения

Некоторые функции MATLAB принимают типы числовых данных, но не значения datetime как входные параметры. Чтобы применить эти функции к вашим данным о дате и времени, преобразуйте значения datetime в значимые числовые значения. Затем вызовите функцию. Например, log функция принимает double входные параметры, но не datetime входные параметры. Предположим, что у вас есть datetime массив дат, охватывающих курс изыскания или эксперимента.

t = datetime(2014,6,18) + calmonths(1:4)
t = 1×4 datetime array 18-Jul-2014 18-Aug-2014 18-Sep-2014 18-Oct-2014

Вычтите значение источника. Например, значение источника может быть стартовым днем эксперимента.

dt = t - datetime(2014,7,1)
dt = 1×4 duration array 408:00:00 1152:00:00 1896:00:00 2616:00:00

dt duration массив. Преобразуйте dt к double массив значений в модулях лет, дней, часов, минут или секунд с помощью years дни часы минуты , или seconds функция, соответственно.

x = hours(dt)
x = 408 1152 1896 2616

Передайте double массив как вход к log функция.

y = log(x)
y = 6.0113 7.0493 7.5475 7.8694

Date Time. To String Метод

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

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

Перегрузки

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

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

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

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

ToString(IFormatProvider)

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

public: virtual System::String ^ ToString(IFormatProvider ^ provider);
public: System::String ^ ToString(IFormatProvider ^ provider);
public string ToString (IFormatProvider provider);
public string ToString (IFormatProvider? provider);
override this.ToString : IFormatProvider -> string
Public Function ToString (provider As IFormatProvider) As String
Параметры

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

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

Строковое представление значения текущего объекта DateTime, заданное параметром provider .

Реализации
Исключения

Дата и время находятся за пределами диапазона дат, поддерживаемого календарем, используемым в provider .

Примеры

В следующем примере отображается строковое представление даты и времени с помощью CultureInfo объектов, представляющих пять разных языков и региональных параметров.

using System; using System.Globalization; public class ToStringExample3 < public static void Main2() < CultureInfo[] cultures = new CultureInfo[] ; DateTime thisDate = new DateTime(2009, 5, 1, 9, 0, 0); foreach (CultureInfo culture in cultures) < string cultureName; if (string.IsNullOrEmpty(culture.Name)) cultureName = culture.NativeName; else cultureName = culture.Name; Console.WriteLine("In , ", cultureName, thisDate.ToString(culture)); > > > // The example produces the following output: // In Invariant Language (Invariant Country), 05/01/2009 09:00:00 // In en-US, 5/1/2009 9:00:00 AM // In fr-FR, 01/05/2009 09:00:00 // In de-DE, 01.05.2009 09:00:00 // In es-ES, 01/05/2009 9:00:00 // In ja-JP, 2009/05/01 9:00:00 
open System open System.Globalization let cultures = [ CultureInfo.InvariantCulture CultureInfo "en-us" CultureInfo "fr-fr" CultureInfo "de-DE" CultureInfo "es-ES" CultureInfo "ja-JP" ] let thisDate = DateTime(2009, 5, 1, 9, 0, 0) for culture in cultures do let cultureName = if String.IsNullOrEmpty culture.Name then culture.NativeName else culture.Name printfn $"In , " // The example produces the following output: // In Invariant Language (Invariant Country), 05/01/2009 09:00:00 // In en-US, 5/1/2009 9:00:00 AM // In fr-FR, 01/05/2009 09:00:00 // In de-DE, 01.05.2009 09:00:00 // In es-ES, 01/05/2009 9:00:00 // In ja-JP, 2009/05/01 9:00:00 
Imports System.Globalization Module Example4 Public Sub Main4() Dim cultures() As CultureInfo = Dim thisDate As Date = #5/1/2009 9:00AM# For Each culture As CultureInfo In cultures Dim cultureName As String If String.IsNullOrEmpty(culture.Name) Then cultureName = culture.NativeName Else cultureName = culture.Name End If Console.WriteLine("In , ", cultureName, thisDate.ToString(culture)) Next End Sub End Module ' The example produces the following output: ' In Invariant Language (Invariant Country), 05/01/2009 09:00:00 ' In en-US, 5/1/2009 9:00:00 AM ' In fr-FR, 01/05/2009 09:00:00 ' In de-DE, 01.05.2009 09:00:00 ' In es-ES, 01/05/2009 9:00:00 ' In ja-JP, 2009/05/01 9:00:00 

Комментарии

Значение текущего DateTime объекта форматируется с помощью общего описателя формата даты и времени (G), который форматирует выходные данные с использованием шаблона короткой даты и длинного шаблона времени.

Формат шаблона короткой даты и длительного времени определяется параметром provider . Параметр provider может иметь любой из следующих значений:

  • Объект CultureInfo , представляющий язык и региональные параметры, соглашения о форматировании которых должны отражаться в возвращаемой строке. Объект DateTimeFormatInfo , возвращаемый свойством CultureInfo.DateTimeFormat , определяет форматирование возвращаемой строки.
  • Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
  • Пользовательский объект, реализующий IFormatProvider интерфейс . Его GetFormat метод возвращает DateTimeFormatInfo объект , предоставляющий сведения о форматировании.

Если provider имеет значение null , используется объект , DateTimeFormatInfo связанный с текущим языком и региональными параметрами. Для получения дополнительной информации см. CultureInfo.CurrentCulture.

Примечания для тех, кто вызывает этот метод

Метод ToString(IFormatProvider) возвращает строковое представление даты и времени в календаре, используемом языком и региональными параметрами, представленными параметром provider . Его календарь определяется свойством Calendar . Если значение текущего DateTime экземпляра является более ранним или более поздним, чем MinSupportedDateTimeMaxSupportedDateTime, метод создает исключение ArgumentOutOfRangeException. Ниже приведен пример. Он пытается отформатировать дату, которая находится за пределами JapaneseCalendar диапазона класса .

using System; using System.Globalization; public class Example < public static void Main() < CultureInfo jaJP = new CultureInfo("ja-JP"); jaJP.DateTimeFormat.Calendar = new JapaneseCalendar(); DateTime date1 = new DateTime(1867, 1, 1); try < Console.WriteLine(date1.ToString(jaJP)); >catch (ArgumentOutOfRangeException) < Console.WriteLine("is earlier than or later than ", date1, jaJP.DateTimeFormat.Calendar.MinSupportedDateTime, jaJP.DateTimeFormat.Calendar.MaxSupportedDateTime); > > > // The example displays the following output: // 1/1/1867 is earlier than 9/8/1868 or later than 12/31/9999 > 
open System open System.Globalization let jaJP = CultureInfo "ja-JP" jaJP.DateTimeFormat.Calendar " with :? ArgumentOutOfRangeException -> printfn $" is earlier than or later than " // The example displays the following output: // 1/1/1867 is earlier than 9/8/1868 or later than 12/31/9999 > 
Imports System.Globalization Module Example Public Sub Main() Dim jaJP As New CultureInfo("ja-JP") jaJP.DateTimeFormat.Calendar = New JapaneseCalendar() Dim date1 As Date = #01/01/1867# Try Console.WriteLine(date1.ToString(jaJP)) Catch e As ArgumentOutOfRangeException Console.WriteLine(" is earlier than or later than ", _ date1, _ jaJP.DateTimeFormat.Calendar.MinSupportedDateTime, _ jaJP.DateTimeFormat.Calendar.MaxSupportedDateTime) End Try End Sub End Module ' The example displays the following output: ' 1/1/1867 is earlier than 9/8/1868 or later than 12/31/9999 

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

  • DateTimeFormatInfo
  • CultureInfo

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

ToString(String)

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

public: System::String ^ ToString(System::String ^ format);
public string ToString (string format);
public string ToString (string? format);
override this.ToString : string -> string
Public Function ToString (format As String) As String
Параметры

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

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

Строковое представление значения текущего объекта DateTime, заданное параметром format .

Исключения

Длина format равна 1, и он не является одним из символов описателя формата, определенного для DateTimeFormatInfo.

Параметр format не содержит допустимый пользовательский шаблон формата.

Дата и время находятся за пределами диапазона дат, поддерживаемого календарем, принятым для текущего языка и региональных параметров.

Примеры

В следующем примере используются все строки стандартного формата даты и времени, а также выбор настраиваемых строк формата даты и времени для отображения строкового DateTime представления значения. Текущий язык и региональные параметры потока для примера — en-US.

using System; public class DateToStringExample2 < public static void Main() < DateTime dateValue = new DateTime(2008, 6, 15, 21, 15, 07); // Create an array of standard format strings. string[] standardFmts = ; // Output date and time using each standard format string. foreach (string standardFmt in standardFmts) Console.WriteLine(": ", standardFmt, dateValue.ToString(standardFmt)); Console.WriteLine(); // Create an array of some custom format strings. string[] customFmts = ; // Output date and time using each custom format string. foreach (string customFmt in customFmts) Console.WriteLine("'': ", customFmt, dateValue.ToString(customFmt)); > > // This example displays the following output to the console: // d: 6/15/2008 // D: Sunday, June 15, 2008 // f: Sunday, June 15, 2008 9:15 PM // F: Sunday, June 15, 2008 9:15:07 PM // g: 6/15/2008 9:15 PM // G: 6/15/2008 9:15:07 PM // m: June 15 // o: 2008-06-15T21:15:07.0000000 // R: Sun, 15 Jun 2008 21:15:07 GMT // s: 2008-06-15T21:15:07 // t: 9:15 PM // T: 9:15:07 PM // u: 2008-06-15 21:15:07Z // U: Monday, June 16, 2008 4:15:07 AM // y: June, 2008 // // 'h:mm:ss.ff t': 9:15:07.00 P // 'd MMM yyyy': 15 Jun 2008 // 'HH:mm:ss.f': 21:15:07.0 // 'dd MMM HH:mm:ss': 15 Jun 21:15:07 // '\Mon\t\h\: M': Month: 6 // 'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00 
open System let dateValue = DateTime(2008, 6, 15, 21, 15, 07) // Create a list of standard format strings. let standardFmts = [ "d"; "D"; "f"; "F"; "g"; "G"; "m"; "o" "R"; "s"; "t"; "T"; "u"; "U"; "y" ] // Output date and time using each standard format string. for standardFmt in standardFmts do printfn $": " printfn "" // Create a list of some custom format strings. let customFmts = [ "h:mm:ss.ff t"; "d MMM yyyy"; "HH:mm:ss.f"; "dd MMM HH:mm:ss"; @"\Mon\t\h\: M"; "HH:mm:ss.ffffzzz" ] // Output date and time using each custom format string. for customFmt in customFmts do printfn $"'': " // This example displays the following output to the console: // d: 6/15/2008 // D: Sunday, June 15, 2008 // f: Sunday, June 15, 2008 9:15 PM // F: Sunday, June 15, 2008 9:15:07 PM // g: 6/15/2008 9:15 PM // G: 6/15/2008 9:15:07 PM // m: June 15 // o: 2008-06-15T21:15:07.0000000 // R: Sun, 15 Jun 2008 21:15:07 GMT // s: 2008-06-15T21:15:07 // t: 9:15 PM // T: 9:15:07 PM // u: 2008-06-15 21:15:07Z // U: Monday, June 16, 2008 4:15:07 AM // y: June, 2008 // // 'h:mm:ss.ff t': 9:15:07.00 P // 'd MMM yyyy': 15 Jun 2008 // 'HH:mm:ss.f': 21:15:07.0 // 'dd MMM HH:mm:ss': 15 Jun 21:15:07 // '\Mon\t\h\: M': Month: 6 // 'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00 
Module DateToStringExample2 Public Sub Main2() Dim dateValue As Date = #6/15/2008 9:15:07PM# ' Create an array of standard format strings. Dim standardFmts() As String = ' Output date and time using each standard format string. For Each standardFmt As String In standardFmts Console.WriteLine(": ", standardFmt, dateValue.ToString(standardFmt)) Next Console.WriteLine() ' Create an array of some custom format strings. Dim customFmts() As String = ' Output date and time using each custom format string. For Each customFmt As String In customFmts Console.WriteLine("'': ", customFmt, dateValue.ToString(customFmt)) Next End Sub End Module ' This example displays the following output to the console: ' d: 6/15/2008 ' D: Sunday, June 15, 2008 ' f: Sunday, June 15, 2008 9:15 PM ' F: Sunday, June 15, 2008 9:15:07 PM ' g: 6/15/2008 9:15 PM ' G: 6/15/2008 9:15:07 PM ' m: June 15 ' o: 2008-06-15T21:15:07.0000000 ' R: Sun, 15 Jun 2008 21:15:07 GMT ' s: 2008-06-15T21:15:07 ' t: 9:15 PM ' T: 9:15:07 PM ' u: 2008-06-15 21:15:07Z ' U: Monday, June 16, 2008 4:15:07 AM ' y: June, 2008 ' ' 'h:mm:ss.ff t': 9:15:07.00 P ' 'd MMM yyyy': 15 Jun 2008 ' 'HH:mm:ss.f': 21:15:07.0 ' 'dd MMM HH:mm:ss': 15 Jun 21:15:07 ' '\Mon\t\h\: M': Month: 6 ' 'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00 

Комментарии

Метод ToString(String) возвращает строковое представление значения даты и времени в определенном формате, в котором используются соглашения о форматировании текущего языка и региональных параметров. Дополнительные сведения см. в разделе CultureInfo.CurrentCulture.

Параметр format должен содержать один описатель формата (см. раздел Стандартные строки формата даты и времени) или пользовательский шаблон формата (см. раздел Настраиваемые строки формата даты и времени), определяющий формат возвращаемой строки. Если format имеет значение null или является пустой строкой, используется описатель общего формата G.

Ниже приведены некоторые варианты использования этого метода.

  • Получение строки, отображающей дату и время в коротком формате даты и времени текущего языка и региональных параметров. Для этого используется описатель формата «G».
  • Получение строки, содержащей только месяц и год. Для этого используется строка формата «ММ/гггг». Строка формата использует разделитель даты для текущего языка и региональных параметров.
  • Получение строки, содержащей дату и время в определенном формате. Например, строка формата «ММ/дд/ггггЧ:мм» отображает строку даты и времени в фиксированном формате, например «19//03//2013 18:06». Строка формата использует «/» в качестве фиксированного разделителя даты независимо от параметров языка и региональных параметров.
  • Получение даты в сокращенном формате, который можно использовать для сериализации строки даты. Например, в строке формата «ггггММдд» отображается четырехзначный год, за которым следует двухзначный месяц и двухзначный день без разделителя даты.

В следующем примере эти три строки форматирования используются для отображения значения даты и времени с использованием соглашений о языках и региональных параметрах en-US и fr-FR.

using System; using System.Globalization; public class ToStringExample5 < public static void Main3() < string[] formats = < "G", "MM/yyyy", @"MM\/dd\/yyyy HH:mm", "yyyyMMdd" >; string[] cultureNames = < "en-US", "fr-FR" >; DateTime date = new DateTime(2015, 8, 18, 13, 31, 17); foreach (var cultureName in cultureNames) < var culture = new CultureInfo(cultureName); CultureInfo.CurrentCulture = culture; Console.WriteLine(culture.NativeName); foreach (var format in formats) Console.WriteLine($" : "); Console.WriteLine(); > > > // The example displays the following output: // English (United States) // G: 8/18/2015 1:31:17 PM // MM/yyyy: 08/2015 // MM\/dd\/yyyy HH:mm: 08/18/2015 13:31 // yyyyMMdd: 20150818 // // français (France) // G: 18/08/2015 13:31:17 // MM/yyyy: 08/2015 // MM\/dd\/yyyy HH:mm: 08/18/2015 13:31 // yyyyMMdd: 20150818 
open System open System.Globalization let formats = [ "G"; "MM/yyyy"; @"MM\/dd\/yyyy HH:mm"; "yyyyMMdd" ] let cultureNames = [ "en-US"; "fr-FR" ] let date = DateTime(2015, 8, 18, 13, 31, 17) for cultureName in cultureNames do let culture = CultureInfo cultureName CultureInfo.CurrentCulture " for format in formats do printfn $" : " printfn "" // The example displays the following output: // English (United States) // G: 8/18/2015 1:31:17 PM // MM/yyyy: 08/2015 // MM\/dd\/yyyy HH:mm: 08/18/2015 13:31 // yyyyMMdd: 20150818 // // français (France) // G: 18/08/2015 13:31:17 // MM/yyyy: 08/2015 // MM\/dd\/yyyy HH:mm: 08/18/2015 13:31 // yyyyMMdd: 20150818 
Imports System.Globalization Imports System.Threading Public Module Example5 Public Sub Main5() Dim formats() As String = Dim cultureNames() As String = Dim dat As New DateTime(2015, 8, 18, 13, 31, 17) For Each cultureName In cultureNames Dim culture As New CultureInfo(cultureName) CultureInfo.CurrentCulture = culture Console.WriteLine(culture.NativeName) For Each fmt In formats Console.WriteLine(" : ", fmt, dat.ToString(fmt)) Next Console.WriteLine() Next End Sub End Module ' The example displays the following output: ' English (United States) ' G: 8/18/2015 1:31:17 PM ' MM/yyyy: 08/2015 ' MM\/dd\/yyyy HH:mm: 08/18/2015 13:31 ' yyyyMMdd: 20150818 ' ' français (France) ' G: 18/08/2015 13:31:17 ' MM/yyyy: 08/2015 ' MM\/dd\/yyyy HH:mm: 08/18/2015 13:31 ' yyyyMMdd: 20150818 

Примечания для тех, кто вызывает этот метод

Метод ToString(String) возвращает строковое представление даты и времени в календаре, используемом текущим языком и региональными параметрами. Если значение текущего DateTime экземпляра является более ранним или более поздним, чем MinSupportedDateTimeMaxSupportedDateTime, метод создает исключение ArgumentOutOfRangeException. Ниже приведен пример. Он пытается отформатировать дату, которая находится вне диапазона HebrewCalendar класса, если текущим языком и региональными параметрами является иврит (Израиль).

using System; using System.Globalization; using System.Threading; public class Example3 < public static void Main() < DateTime date1 = new DateTime(1550, 7, 21); CultureInfo dft; CultureInfo heIL = new CultureInfo("he-IL"); heIL.DateTimeFormat.Calendar = new HebrewCalendar(); // Change current culture to he-IL. dft = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = heIL; // Display the date using the current culture's calendar. try < Console.WriteLine(date1.ToString("G")); >catch (ArgumentOutOfRangeException) < Console.WriteLine("is earlier than or later than ", date1.ToString("d", CultureInfo.InvariantCulture), heIL.DateTimeFormat.Calendar.MinSupportedDateTime.ToString("d", CultureInfo.InvariantCulture), heIL.DateTimeFormat.Calendar.MaxSupportedDateTime.ToString("d", CultureInfo.InvariantCulture)); > // Restore the default culture. Thread.CurrentThread.CurrentCulture = dft; > > // The example displays the following output: // 07/21/1550 is earlier than 01/01/1583 or later than 09/29/2239 
open System open System.Globalization open System.Threading let date1 = DateTime(1550, 7, 21) let heIL = CultureInfo "he-IL" heIL.DateTimeFormat.Calendar " with :? ArgumentOutOfRangeException -> printfn $""" is earlier than or later than """ // Restore the default culture. Thread.CurrentThread.CurrentCulture  
Imports System.Globalization Imports System.Threading Module Example Public Sub Main() Dim date1 As Date = #7/21/1550# Dim dft As CultureInfo Dim heIL As New CultureInfo("he-IL") heIL.DateTimeFormat.Calendar = New HebrewCalendar() ' Change current culture to he-IL. dft = Thread.CurrentThread.CurrentCulture Thread.CurrentThread.CurrentCulture = heIL ' Display the date using the current culture's calendar. Try Console.WriteLine(date1.ToString("G")) Catch e As ArgumentOutOfRangeException Console.WriteLine(" is earlier than or later than ", _ date1.ToString("d", CultureInfo.InvariantCulture), _ heIL.DateTimeFormat.Calendar.MinSupportedDateTime.ToString("d", CultureInfo.InvariantCulture), _ heIL.DateTimeFormat.Calendar.MaxSupportedDateTime.ToString("d", CultureInfo.InvariantCulture)) End Try ' Restore the default culture. Thread.CurrentThread.CurrentCulture = dft End Sub End Module ' The example displays the following output: ' 07/21/1550 is earlier than 01/01/1583 or later than 09/29/2239 

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

  • DateTimeFormatInfo
  • CultureInfo
  • Типы форматирования в .NET
  • Строки стандартных форматов даты и времени
  • Строки настраиваемых форматов даты и времени

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

ToString()

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

public: override System::String ^ ToString();
public override string ToString ();
override this.ToString : unit -> string
Public Overrides Function ToString () As String
Возвращаемое значение

Строковое представление значения текущего объекта DateTime.

Исключения

Дата и время находятся за пределами диапазона дат, поддерживаемого календарем, принятым для текущего языка и региональных параметров.

Примеры

В следующем примере показано, как строковое представление значения, возвращаемого DateTime методом ToString() , зависит от текущего языка и региональных параметров потока. Он изменяет текущий язык и региональные параметры на en-US, fr-FR и ja-JP и в каждом случае вызывает ToString() метод для возврата строкового представления значения даты и времени с помощью этого языка и региональных параметров.

using System; using System.Globalization; public class ToStringExample1 < public static void Main() < CultureInfo currentCulture = CultureInfo.CurrentCulture; DateTime exampleDate = new DateTime(2021, 5, 1, 18, 32, 6); // Change the current culture to en-US and display the date. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US"); Console.WriteLine(exampleDate.ToString()); // Change the current culture to fr-FR and display the date. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fr-FR"); Console.WriteLine(exampleDate.ToString()); // Change the current culture to ja-JP and display the date. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("ja-JP"); Console.WriteLine(exampleDate.ToString()); // Restore the original culture CultureInfo.CurrentCulture = currentCulture; >> // The example displays the following output to the console: // 5/1/2021 6:32:06 PM // 01/05/2021 18:32:06 // 2021/05/01 18:32:06 
open System open System.Globalization let currentCulture = CultureInfo.CurrentCulture let exampleDate = DateTime(2021, 5, 1, 18, 32, 6) // Change the current culture to en-US and display the date. CultureInfo.CurrentCulture " // Change the current culture to fr-FR and display the date. CultureInfo.CurrentCulture " // Change the current culture to ja-JP and display the date. CultureInfo.CurrentCulture " // Restore the original culture CultureInfo.CurrentCulture  
Imports System.Globalization Module DateToStringExample Public Sub Main() Dim currentCulture As CultureInfo = CultureInfo.CurrentCulture Dim exampleDate As Date = #05/01/2021 6:32:06PM# ' Change the current culture to en-US and display the date. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US") Console.WriteLine(exampleDate.ToString()) ' Change the current culture to fr-FR and display the date. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fr-FR") Console.WriteLine(exampleDate.ToString()) ' Change the current culture to ja-JP and display the date. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("ja-JP") Console.WriteLine(exampleDate.ToString()) ' Restore the original culture CultureInfo.CurrentCulture = currentCulture End Sub End Module ' The example displays the following output to the console: ' 5/1/2021 6:32:06 PM ' 01/05/2021 18:32:06 ' 2021/05/01 18:32:06 

Комментарии

Значение текущего DateTime объекта форматируется с помощью общего описателя формата даты и времени ('G'). Чтобы отформатировать его с помощью определенного описателя формата даты и времени, вызовите ToString(String) метод . Чтобы отформатировать его с помощью общего описатель формата даты и времени ('G') для определенного языка и региональных параметров, вызовите ToString(IFormatProvider) метод . Чтобы отформатировать его с помощью определенного описатель формата даты и времени и соглашений, относящихся к определенному языку ToString(String, IFormatProvider) и региональным параметрам, вызовите метод .

Этот метод использует сведения о форматировании, производные от текущего языка и региональных параметров. В частности, он объединяет строки настраиваемого формата, возвращаемые свойствами ShortDatePatternDateTimeFormatInfo и LongTimePattern объекта , возвращаемого свойством Thread.CurrentThread.CurrentCulture.DateTimeFormat . Для получения дополнительной информации см. CultureInfo.CurrentCulture. Другие перегрузки ToString метода позволяют указать язык и региональные параметры, форматирование которых следует использовать, и определить выходной DateTime шаблон значения.

Примечания для тех, кто вызывает этот метод

Метод ToString() возвращает строковое представление даты и времени в календаре, используемом текущим языком и региональными параметрами. Если значение текущего DateTime экземпляра является более ранним или более поздним, чем MinSupportedDateTimeMaxSupportedDateTime, метод создает исключение ArgumentOutOfRangeException. Ниже приведен пример. Он пытается отформатировать дату, которая находится за пределами HijriCalendar диапазона класса, если текущим языком и региональными параметрами является арабский (Сирия).

using System; using System.Globalization; using System.Threading; public class Example2 < public static void Main() < DateTime date1 = new DateTime(550, 1, 1); CultureInfo dft; CultureInfo arSY = new CultureInfo("ar-SY"); arSY.DateTimeFormat.Calendar = new HijriCalendar(); // Change current culture to ar-SY. dft = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = arSY; // Display the date using the current culture's calendar. try < Console.WriteLine(date1.ToString()); >catch (ArgumentOutOfRangeException) < Console.WriteLine("is earlier than or later than ", date1.ToString("d", CultureInfo.InvariantCulture), arSY.DateTimeFormat.Calendar.MinSupportedDateTime.ToString("d", CultureInfo.InvariantCulture), arSY.DateTimeFormat.Calendar.MaxSupportedDateTime.ToString("d", CultureInfo.InvariantCulture)); > // Restore the default culture. Thread.CurrentThread.CurrentCulture = dft; > > // The example displays the following output: // 01/01/0550 is earlier than 07/18/0622 or later than 12/31/9999 
open System open System.Globalization open System.Threading let date1 = DateTime(550, 1, 1) let arSY = CultureInfo "ar-SY" arSY.DateTimeFormat.Calendar " with :? ArgumentOutOfRangeException -> printfn $""" is earlier than or later than """ // Restore the default culture. Thread.CurrentThread.CurrentCulture  
Imports System.Globalization Imports System.Threading Module Example Public Sub Main() Dim date1 As Date = #1/1/550# Dim dft As CultureInfo Dim arSY As New CultureInfo("ar-SY") arSY.DateTimeFormat.Calendar = New HijriCalendar() ' Change current culture to ar-SY. dft = Thread.CurrentThread.CurrentCulture Thread.CurrentThread.CurrentCulture = arSY ' Display the date using the current culture's calendar. Try Console.WriteLine(date1.ToString()) Catch e As ArgumentOutOfRangeException Console.WriteLine(" is earlier than or later than ", _ date1.ToString("d", CultureInfo.InvariantCulture), _ arSY.DateTimeFormat.Calendar.MinSupportedDateTime.ToString("d", CultureInfo.InvariantCulture), _ arSY.DateTimeFormat.Calendar.MaxSupportedDateTime.ToString("d", CultureInfo.InvariantCulture)) End Try ' Restore the default culture. Thread.CurrentThread.CurrentCulture = dft End Sub End Module ' The example displays the following output: ' 01/01/0550 is earlier than 07/18/0622 or later than 12/31/9999 

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

  • DateTimeFormatInfo
  • CultureInfo

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

ToString(String, IFormatProvider)

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

public: virtual System::String ^ ToString(System::String ^ format, IFormatProvider ^ provider);
public string ToString (string format, IFormatProvider provider);
public string ToString (string? format, IFormatProvider? provider);
override this.ToString : string * IFormatProvider -> string
Public Function ToString (format As String, provider As IFormatProvider) As String
Параметры

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

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

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

Строковое представление значения текущего объекта DateTime, заданное параметрами format и provider .

Реализации
Исключения

Длина format равна 1, и он не является одним из символов описателя формата, определенного для DateTimeFormatInfo.

format не содержит допустимого шаблона пользовательского формата.

Дата и время находятся за пределами диапазона дат, поддерживаемого календарем, используемым в provider .

Примеры

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

using System; using System.Globalization; public class ToStringExample4 < public static void Main1() < // Create an array of all supported standard date and time format specifiers. string[] formats = ; // Create an array of four cultures. CultureInfo[] cultures = ; // Define date to be displayed. DateTime dateToDisplay = new DateTime(2008, 10, 31, 17, 4, 32); // Iterate each standard format specifier. foreach (string formatSpecifier in formats) < foreach (CultureInfo culture in cultures) Console.WriteLine("Format Specifier Culture ", formatSpecifier, culture.Name, dateToDisplay.ToString(formatSpecifier, culture)); Console.WriteLine(); > > > // The example displays the following output: // d Format Specifier de-DE Culture 31.10.2008 // d Format Specifier en-US Culture 10/31/2008 // d Format Specifier es-ES Culture 31/10/2008 // d Format Specifier fr-FR Culture 31/10/2008 // // D Format Specifier de-DE Culture Freitag, 31. Oktober 2008 // D Format Specifier en-US Culture Friday, October 31, 2008 // D Format Specifier es-ES Culture viernes, 31 de octubre de 2008 // D Format Specifier fr-FR Culture vendredi 31 octobre 2008 // // f Format Specifier de-DE Culture Freitag, 31. Oktober 2008 17:04 // f Format Specifier en-US Culture Friday, October 31, 2008 5:04 PM // f Format Specifier es-ES Culture viernes, 31 de octubre de 2008 17:04 // f Format Specifier fr-FR Culture vendredi 31 octobre 2008 17:04 // // F Format Specifier de-DE Culture Freitag, 31. Oktober 2008 17:04:32 // F Format Specifier en-US Culture Friday, October 31, 2008 5:04:32 PM // F Format Specifier es-ES Culture viernes, 31 de octubre de 2008 17:04:32 // F Format Specifier fr-FR Culture vendredi 31 octobre 2008 17:04:32 // // g Format Specifier de-DE Culture 31.10.2008 17:04 // g Format Specifier en-US Culture 10/31/2008 5:04 PM // g Format Specifier es-ES Culture 31/10/2008 17:04 // g Format Specifier fr-FR Culture 31/10/2008 17:04 // // G Format Specifier de-DE Culture 31.10.2008 17:04:32 // G Format Specifier en-US Culture 10/31/2008 5:04:32 PM // G Format Specifier es-ES Culture 31/10/2008 17:04:32 // G Format Specifier fr-FR Culture 31/10/2008 17:04:32 // // m Format Specifier de-DE Culture 31. Oktober // m Format Specifier en-US Culture October 31 // m Format Specifier es-ES Culture 31 de octubre // m Format Specifier fr-FR Culture 31 octobre // // o Format Specifier de-DE Culture 2008-10-31T17:04:32.0000000 // o Format Specifier en-US Culture 2008-10-31T17:04:32.0000000 // o Format Specifier es-ES Culture 2008-10-31T17:04:32.0000000 // o Format Specifier fr-FR Culture 2008-10-31T17:04:32.0000000 // // r Format Specifier de-DE Culture Fri, 31 Oct 2008 17:04:32 GMT // r Format Specifier en-US Culture Fri, 31 Oct 2008 17:04:32 GMT // r Format Specifier es-ES Culture Fri, 31 Oct 2008 17:04:32 GMT // r Format Specifier fr-FR Culture Fri, 31 Oct 2008 17:04:32 GMT // // s Format Specifier de-DE Culture 2008-10-31T17:04:32 // s Format Specifier en-US Culture 2008-10-31T17:04:32 // s Format Specifier es-ES Culture 2008-10-31T17:04:32 // s Format Specifier fr-FR Culture 2008-10-31T17:04:32 // // t Format Specifier de-DE Culture 17:04 // t Format Specifier en-US Culture 5:04 PM // t Format Specifier es-ES Culture 17:04 // t Format Specifier fr-FR Culture 17:04 // // T Format Specifier de-DE Culture 17:04:32 // T Format Specifier en-US Culture 5:04:32 PM // T Format Specifier es-ES Culture 17:04:32 // T Format Specifier fr-FR Culture 17:04:32 // // u Format Specifier de-DE Culture 2008-10-31 17:04:32Z // u Format Specifier en-US Culture 2008-10-31 17:04:32Z // u Format Specifier es-ES Culture 2008-10-31 17:04:32Z // u Format Specifier fr-FR Culture 2008-10-31 17:04:32Z // // U Format Specifier de-DE Culture Freitag, 31. Oktober 2008 09:04:32 // U Format Specifier en-US Culture Friday, October 31, 2008 9:04:32 AM // U Format Specifier es-ES Culture viernes, 31 de octubre de 2008 9:04:32 // U Format Specifier fr-FR Culture vendredi 31 octobre 2008 09:04:32 // // Y Format Specifier de-DE Culture Oktober 2008 // Y Format Specifier en-US Culture October 2008 // Y Format Specifier es-ES Culture octubre de 2008 // Y Format Specifier fr-FR Culture octobre 2008 
open System open System.Globalization // Create a list of all supported standard date and time format specifiers. let formats = [ "d"; "D"; "f"; "F"; "g"; "G"; "m"; "o" "r"; "s"; "t"; "T"; "u"; "U"; "Y" ] // Create a list of four cultures. let cultures = [ CultureInfo.GetCultureInfo "de-DE" CultureInfo.GetCultureInfo "en-US" CultureInfo.GetCultureInfo "es-ES" CultureInfo.GetCultureInfo "fr-FR" ] // Define date to be displayed. let dateToDisplay = DateTime(2008, 10, 31, 17, 4, 32) // Iterate each standard format specifier. for formatSpecifier in formats do for culture in cultures do printfn $" Format Specifier Culture " printfn "" // The example displays the following output: // d Format Specifier de-DE Culture 31.10.2008 // d Format Specifier en-US Culture 10/31/2008 // d Format Specifier es-ES Culture 31/10/2008 // d Format Specifier fr-FR Culture 31/10/2008 // // D Format Specifier de-DE Culture Freitag, 31. Oktober 2008 // D Format Specifier en-US Culture Friday, October 31, 2008 // D Format Specifier es-ES Culture viernes, 31 de octubre de 2008 // D Format Specifier fr-FR Culture vendredi 31 octobre 2008 // // f Format Specifier de-DE Culture Freitag, 31. Oktober 2008 17:04 // f Format Specifier en-US Culture Friday, October 31, 2008 5:04 PM // f Format Specifier es-ES Culture viernes, 31 de octubre de 2008 17:04 // f Format Specifier fr-FR Culture vendredi 31 octobre 2008 17:04 // // F Format Specifier de-DE Culture Freitag, 31. Oktober 2008 17:04:32 // F Format Specifier en-US Culture Friday, October 31, 2008 5:04:32 PM // F Format Specifier es-ES Culture viernes, 31 de octubre de 2008 17:04:32 // F Format Specifier fr-FR Culture vendredi 31 octobre 2008 17:04:32 // // g Format Specifier de-DE Culture 31.10.2008 17:04 // g Format Specifier en-US Culture 10/31/2008 5:04 PM // g Format Specifier es-ES Culture 31/10/2008 17:04 // g Format Specifier fr-FR Culture 31/10/2008 17:04 // // G Format Specifier de-DE Culture 31.10.2008 17:04:32 // G Format Specifier en-US Culture 10/31/2008 5:04:32 PM // G Format Specifier es-ES Culture 31/10/2008 17:04:32 // G Format Specifier fr-FR Culture 31/10/2008 17:04:32 // // m Format Specifier de-DE Culture 31. Oktober // m Format Specifier en-US Culture October 31 // m Format Specifier es-ES Culture 31 de octubre // m Format Specifier fr-FR Culture 31 octobre // // o Format Specifier de-DE Culture 2008-10-31T17:04:32.0000000 // o Format Specifier en-US Culture 2008-10-31T17:04:32.0000000 // o Format Specifier es-ES Culture 2008-10-31T17:04:32.0000000 // o Format Specifier fr-FR Culture 2008-10-31T17:04:32.0000000 // // r Format Specifier de-DE Culture Fri, 31 Oct 2008 17:04:32 GMT // r Format Specifier en-US Culture Fri, 31 Oct 2008 17:04:32 GMT // r Format Specifier es-ES Culture Fri, 31 Oct 2008 17:04:32 GMT // r Format Specifier fr-FR Culture Fri, 31 Oct 2008 17:04:32 GMT // // s Format Specifier de-DE Culture 2008-10-31T17:04:32 // s Format Specifier en-US Culture 2008-10-31T17:04:32 // s Format Specifier es-ES Culture 2008-10-31T17:04:32 // s Format Specifier fr-FR Culture 2008-10-31T17:04:32 // // t Format Specifier de-DE Culture 17:04 // t Format Specifier en-US Culture 5:04 PM // t Format Specifier es-ES Culture 17:04 // t Format Specifier fr-FR Culture 17:04 // // T Format Specifier de-DE Culture 17:04:32 // T Format Specifier en-US Culture 5:04:32 PM // T Format Specifier es-ES Culture 17:04:32 // T Format Specifier fr-FR Culture 17:04:32 // // u Format Specifier de-DE Culture 2008-10-31 17:04:32Z // u Format Specifier en-US Culture 2008-10-31 17:04:32Z // u Format Specifier es-ES Culture 2008-10-31 17:04:32Z // u Format Specifier fr-FR Culture 2008-10-31 17:04:32Z // // U Format Specifier de-DE Culture Freitag, 31. Oktober 2008 09:04:32 // U Format Specifier en-US Culture Friday, October 31, 2008 9:04:32 AM // U Format Specifier es-ES Culture viernes, 31 de octubre de 2008 9:04:32 // U Format Specifier fr-FR Culture vendredi 31 octobre 2008 09:04:32 // // Y Format Specifier de-DE Culture Oktober 2008 // Y Format Specifier en-US Culture October 2008 // Y Format Specifier es-ES Culture octubre de 2008 // Y Format Specifier fr-FR Culture octobre 2008 
Imports System.Globalization Module Example Public Sub Main4() ' Create an array of all supported standard date and time format specifiers. Dim formats() As String = ' Create an array of four cultures. Dim cultures() As CultureInfo = ' Define date to be displayed. Dim dateToDisplay As Date = #10/1/2008 17:04:32# ' Iterate each standard format specifier. For Each formatSpecifier As String In formats For Each culture As CultureInfo In cultures Console.WriteLine(" Format Specifier Culture ", formatSpecifier, culture.Name, dateToDisplay.ToString(formatSpecifier, culture)) Next Console.WriteLine() Next End Sub End Module ' The example displays the following output: ' d Format Specifier de-DE Culture 01.10.2008 ' d Format Specifier en-US Culture 10/1/2008 ' d Format Specifier es-ES Culture 01/10/2008 ' d Format Specifier fr-FR Culture 01/10/2008 ' ' D Format Specifier de-DE Culture Mittwoch, 1. Oktober 2008 ' D Format Specifier en-US Culture Wednesday, October 01, 2008 ' D Format Specifier es-ES Culture miércoles, 01 de octubre de 2008 ' D Format Specifier fr-FR Culture mercredi 1 octobre 2008 ' ' f Format Specifier de-DE Culture Mittwoch, 1. Oktober 2008 17:04 ' f Format Specifier en-US Culture Wednesday, October 01, 2008 5:04 PM ' f Format Specifier es-ES Culture miércoles, 01 de octubre de 2008 17:04 ' f Format Specifier fr-FR Culture mercredi 1 octobre 2008 17:04 ' ' F Format Specifier de-DE Culture Mittwoch, 1. Oktober 2008 17:04:32 ' F Format Specifier en-US Culture Wednesday, October 01, 2008 5:04:32 PM ' F Format Specifier es-ES Culture miércoles, 01 de octubre de 2008 17:04:3 ' F Format Specifier fr-FR Culture mercredi 1 octobre 2008 17:04:32 ' ' g Format Specifier de-DE Culture 01.10.2008 17:04 ' g Format Specifier en-US Culture 10/1/2008 5:04 PM ' g Format Specifier es-ES Culture 01/10/2008 17:04 ' g Format Specifier fr-FR Culture 01/10/2008 17:04 ' ' G Format Specifier de-DE Culture 01.10.2008 17:04:32 ' G Format Specifier en-US Culture 10/1/2008 5:04:32 PM ' G Format Specifier es-ES Culture 01/10/2008 17:04:32 ' G Format Specifier fr-FR Culture 01/10/2008 17:04:32 ' ' m Format Specifier de-DE Culture 01 Oktober ' m Format Specifier en-US Culture October 01 ' m Format Specifier es-ES Culture 01 octubre ' m Format Specifier fr-FR Culture 1 octobre ' ' o Format Specifier de-DE Culture 2008-10-01T17:04:32.0000000 ' o Format Specifier en-US Culture 2008-10-01T17:04:32.0000000 ' o Format Specifier es-ES Culture 2008-10-01T17:04:32.0000000 ' o Format Specifier fr-FR Culture 2008-10-01T17:04:32.0000000 ' ' r Format Specifier de-DE Culture Wed, 01 Oct 2008 17:04:32 GMT ' r Format Specifier en-US Culture Wed, 01 Oct 2008 17:04:32 GMT ' r Format Specifier es-ES Culture Wed, 01 Oct 2008 17:04:32 GMT ' r Format Specifier fr-FR Culture Wed, 01 Oct 2008 17:04:32 GMT ' ' s Format Specifier de-DE Culture 2008-10-01T17:04:32 ' s Format Specifier en-US Culture 2008-10-01T17:04:32 ' s Format Specifier es-ES Culture 2008-10-01T17:04:32 ' s Format Specifier fr-FR Culture 2008-10-01T17:04:32 ' ' t Format Specifier de-DE Culture 17:04 ' t Format Specifier en-US Culture 5:04 PM ' t Format Specifier es-ES Culture 17:04 ' t Format Specifier fr-FR Culture 17:04 ' ' T Format Specifier de-DE Culture 17:04:32 ' T Format Specifier en-US Culture 5:04:32 PM ' T Format Specifier es-ES Culture 17:04:32 ' T Format Specifier fr-FR Culture 17:04:32 ' ' u Format Specifier de-DE Culture 2008-10-01 17:04:32Z ' u Format Specifier en-US Culture 2008-10-01 17:04:32Z ' u Format Specifier es-ES Culture 2008-10-01 17:04:32Z ' u Format Specifier fr-FR Culture 2008-10-01 17:04:32Z ' ' U Format Specifier de-DE Culture Donnerstag, 2. Oktober 2008 00:04:32 ' U Format Specifier en-US Culture Thursday, October 02, 2008 12:04:32 AM ' U Format Specifier es-ES Culture jueves, 02 de octubre de 2008 0:04:32 ' U Format Specifier fr-FR Culture jeudi 2 octobre 2008 00:04:32 ' ' Y Format Specifier de-DE Culture Oktober 2008 ' Y Format Specifier en-US Culture October, 2008 ' Y Format Specifier es-ES Culture octubre de 2008 ' Y Format Specifier fr-FR Culture octobre 2008 

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

using namespace System; using namespace System::Globalization; void main() < DateTime dt = DateTime::Now; array^format = ; String^ date; for ( int i = 0; i < format->Length; i++ ) < date = dt.ToString( format[ i ], DateTimeFormatInfo::InvariantInfo ); Console::WriteLine( String::Concat( format[ i ], L" :", date ) ); >/** Output. * * d :08/17/2000 * D :Thursday, August 17, 2000 * f :Thursday, August 17, 2000 16:32 * F :Thursday, August 17, 2000 16:32:32 * g :08/17/2000 16:32 * G :08/17/2000 16:32:32 * m :August 17 * r :Thu, 17 Aug 2000 23:32:32 GMT * s :2000-08-17T16:32:32 * t :16:32 * T :16:32:32 * u :2000-08-17 23:32:32Z * U :Thursday, August 17, 2000 23:32:32 * y :August, 2000 * dddd, MMMM dd yyyy :Thursday, August 17 2000 * ddd, MMM d "'"yy :Thu, Aug 17 '00 * dddd, MMMM dd :Thursday, August 17 * M/yy :8/00 * dd-MM-yy :17-08-00 */ > 
open System open System.Globalization let dt = DateTime.Now let formats = [ "d"; "D" "f"; "F" "g"; "G" "m" "r" "s" "t"; "T" "u"; "U" "y" "dddd, MMMM dd yyyy" "ddd, MMM d \"'\"yy" "dddd, MMMM dd" "M/yy" "dd-MM-yy" ] for format in formats do let date = dt.ToString(format, DateTimeFormatInfo.InvariantInfo) printfn $": " // Output. // d: 08/17/2000 // D: Thursday, August 17, 2000 // f: Thursday, August 17, 2000 16:32 // F: Thursday, August 17, 2000 16:32:32 // g: 08/17/2000 16:32 // G: 08/17/2000 16:32:32 // m: August 17 // r: Thu, 17 Aug 2000 23:32:32 GMT // s: 2000-08-17T16:32:32 // t: 16:32 // T: 16:32:32 // u: 2000-08-17 23:32:32Z // U: Thursday, August 17, 2000 23:32:32 // y: August, 2000 // dddd, MMMM dd yyyy: Thursday, August 17 2000 // ddd, MMM d "'"yy: Thu, Aug 17 '00 // dddd, MMMM dd: Thursday, August 17 // M/yy: 8/00 // dd-MM-yy: 17-08-00 
using System; using System.Globalization; public class MainClass < public static void Main(string[] args) < DateTime dt = DateTime.Now; String[] format = < "d", "D", "f", "F", "g", "G", "m", "r", "s", "t", "T", "u", "U", "y", "dddd, MMMM dd yyyy", "ddd, MMM d \"'\"yy", "dddd, MMMM dd", "M/yy", "dd-MM-yy", >; string date; for (int i = 0; i < format.Length; i++) < date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo); Console.WriteLine(string.Concat(format[i], " :", date)); >/** Output. * * d :08/17/2000 * D :Thursday, August 17, 2000 * f :Thursday, August 17, 2000 16:32 * F :Thursday, August 17, 2000 16:32:32 * g :08/17/2000 16:32 * G :08/17/2000 16:32:32 * m :August 17 * r :Thu, 17 Aug 2000 23:32:32 GMT * s :2000-08-17T16:32:32 * t :16:32 * T :16:32:32 * u :2000-08-17 23:32:32Z * U :Thursday, August 17, 2000 23:32:32 * y :August, 2000 * dddd, MMMM dd yyyy :Thursday, August 17 2000 * ddd, MMM d "'"yy :Thu, Aug 17 '00 * dddd, MMMM dd :Thursday, August 17 * M/yy :8/00 * dd-MM-yy :17-08-00 */ > > 
Option Explicit Option Strict Imports System.Globalization Public Class MainClass Public Shared Sub Main() Dim dt As DateTime = DateTime.Now Dim myformat() As String = Dim mydate As String Dim i As Integer For i = 0 To myformat.Length - 1 mydate = dt.ToString(myformat(i), DateTimeFormatInfo.InvariantInfo) Console.WriteLine(String.Concat(myformat(i), " :", mydate)) Next i ' Output. ' ' d :08/17/2000 ' D :Thursday, August 17, 2000 ' f :Thursday, August 17, 2000 16:32 ' F :Thursday, August 17, 2000 16:32:32 ' g :08/17/2000 16:32 ' G :08/17/2000 16:32:32 ' m :August 17 ' r :Thu, 17 Aug 2000 23:32:32 GMT ' s :2000-08-17T16:32:32 ' t :16:32 ' T :16:32:32 ' u :2000-08-17 23:32:32Z ' U :Thursday, August 17, 2000 23:32:32 ' y :August, 2000 ' dddd, MMMM dd yyyy :Thursday, August 17 2000 ' ddd, MMM d "'"yy :Thu, Aug 17 '00 ' dddd, MMMM dd :Thursday, August 17 ' M/yy :8/00 ' dd-MM-yy :17-08-00 End Sub End Class 

Комментарии

Параметр format может содержать один символ описателя формата (см. раздел Стандартные строки формата даты и времени) или пользовательский шаблон формата (см. раздел Настраиваемые строки формата даты и времени). Если format имеет значение null или является пустой строкой (""), используется описатель стандартного формата "G".

Параметр provider определяет шаблон, соответствующий описателям стандартного формата, а также символы и имена компонентов даты и времени. Параметр provider может иметь любой из следующих значений:

  • Объект CultureInfo , представляющий язык и региональные параметры, соглашения о форматировании которых должны отражаться в возвращаемой строке. Объект DateTimeFormatInfo , возвращаемый свойством CultureInfo.DateTimeFormat , определяет форматирование возвращаемой строки.
  • Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
  • Пользовательский объект, реализующий IFormatProvider интерфейс . Его GetFormat метод возвращает DateTimeFormatInfo объект , предоставляющий сведения о форматировании.

Если provider имеет значение null , используется объект , DateTimeFormatInfo связанный с текущим языком и региональными параметрами. Для получения дополнительной информации см. CultureInfo.CurrentCulture.

Примечания для тех, кто вызывает этот метод

Метод ToString(String, IFormatProvider) возвращает строковое представление даты и времени в календаре, используемом параметром provider . Его календарь определяется свойством Calendar . Если значение текущего DateTime экземпляра является более ранним или более поздним, чем MinSupportedDateTimeMaxSupportedDateTime, метод создает исключение ArgumentOutOfRangeException. Ниже приведен пример. Он пытается отформатировать дату, которая находится за пределами UmAlQuraCalendar диапазона класса .

using System; using System.Globalization; public class Example4 < public static void Main() < CultureInfo arSA = new CultureInfo("ar-SA"); arSA.DateTimeFormat.Calendar = new UmAlQuraCalendar(); DateTime date1 = new DateTime(1890, 9, 10); try < Console.WriteLine(date1.ToString("d", arSA)); >catch (ArgumentOutOfRangeException) < Console.WriteLine("is earlier than or later than ", date1, arSA.DateTimeFormat.Calendar.MinSupportedDateTime, arSA.DateTimeFormat.Calendar.MaxSupportedDateTime); > > > // The example displays the following output: // 9/10/1890 is earlier than 4/30/1900 or later than 5/13/2029 
open System open System.Globalization let arSA = CultureInfo "ar-SA" arSA.DateTimeFormat.Calendar printfn "%s" with :? ArgumentOutOfRangeException -> printfn $" is earlier than or later than " // The example displays the following output: // 9/10/1890 is earlier than 4/30/1900 or later than 5/13/2029 
Imports System.Globalization Module Example Public Sub Main() Dim arSA As New CultureInfo("ar-SA") arSA.DateTimeFormat.Calendar = New UmAlQuraCalendar() Dim date1 As Date = #09/10/1890# Try Console.WriteLine(date1.ToString("d", arSA)) Catch e As ArgumentOutOfRangeException Console.WriteLine(" is earlier than or later than ", _ date1, _ arSA.DateTimeFormat.Calendar.MinSupportedDateTime, _ arSA.DateTimeFormat.Calendar.MaxSupportedDateTime) End Try End Sub End Module ' The example displays the following output: ' 9/10/1890 is earlier than 4/30/1900 or later than 5/13/2029 

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

  • DateTimeFormatInfo
  • CultureInfo
  • Типы форматирования в .NET
  • Строки стандартных форматов даты и времени
  • Строки настраиваемых форматов даты и времени
  • Пример: служебная программа форматирования .NET Core WinForms (C#)
  • Пример: служебная программа форматирования .NET Core WinForms (Visual Basic)

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

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