FormatDateTime
Contenu
[
Cacher
]IFieldResultFormatter.FormatDateTime method
Appelé lorsque Aspose.Words applique un changement de format date/heure, c’est-à-dire @ “jj.MM.aaaa”.
public string FormatDateTime(DateTime value, string format, CalendarType calendarType)
Remarques
L’implémentation devrait renvoyernul
pour indiquer que le formatage par défaut doit être appliqué.
Exemples
Montre comment appliquer automatiquement un format personnalisé aux résultats des champs à mesure que les champs sont mis à jour.
public void FieldResultFormatting()
{
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
FieldResultFormatter formatter = new FieldResultFormatter("${0}", "Date: {0}", "Item # {0}:");
doc.FieldOptions.ResultFormatter = formatter;
// Notre formateur de résultats de champ applique un format personnalisé aux champs nouvellement créés de trois types de formats.
// Les formateurs de résultats de champs appliquent un nouveau formatage aux champs au fur et à mesure de leur mise à jour,
// ce qui se produit dès que nous les créons en utilisant cette surcharge de méthode InsertField.
// 1 - Numérique :
builder.InsertField(" = 2 + 3 \\# $###");
Assert.AreEqual("$5", doc.Range.Fields[0].Result);
Assert.AreEqual(1, formatter.CountFormatInvocations(FieldResultFormatter.FormatInvocationType.Numeric));
// 2 - Date/heure :
builder.InsertField("DATE \\@ \"d MMMM yyyy\"");
Assert.IsTrue(doc.Range.Fields[1].Result.StartsWith("Date: "));
Assert.AreEqual(1, formatter.CountFormatInvocations(FieldResultFormatter.FormatInvocationType.DateTime));
// 3 - Général :
builder.InsertField("QUOTE \"2\" \\* Ordinal");
Assert.AreEqual("Item # 2:", doc.Range.Fields[2].Result);
Assert.AreEqual(1, formatter.CountFormatInvocations(FieldResultFormatter.FormatInvocationType.General));
formatter.PrintFormatInvocations();
}
/// <summary>
/// Lorsque les champs avec formatage sont mis à jour, ce formateur remplacera leur formatage
/// avec un format personnalisé, tout en suivant chaque invocation.
/// </summary>
private class FieldResultFormatter : IFieldResultFormatter
{
public FieldResultFormatter(string numberFormat, string dateFormat, string generalFormat)
{
mNumberFormat = numberFormat;
mDateFormat = dateFormat;
mGeneralFormat = generalFormat;
}
public string FormatNumeric(double value, string format)
{
if (string.IsNullOrEmpty(mNumberFormat))
return null;
string newValue = String.Format(mNumberFormat, value);
FormatInvocations.Add(new FormatInvocation(FormatInvocationType.Numeric, value, format, newValue));
return newValue;
}
public string FormatDateTime(DateTime value, string format, CalendarType calendarType)
{
if (string.IsNullOrEmpty(mDateFormat))
return null;
string newValue = String.Format(mDateFormat, value);
FormatInvocations.Add(new FormatInvocation(FormatInvocationType.DateTime, $"{value} ({calendarType})", format, newValue));
return newValue;
}
public string Format(string value, GeneralFormat format)
{
return Format((object)value, format);
}
public string Format(double value, GeneralFormat format)
{
return Format((object)value, format);
}
private string Format(object value, GeneralFormat format)
{
if (string.IsNullOrEmpty(mGeneralFormat))
return null;
string newValue = String.Format(mGeneralFormat, value);
FormatInvocations.Add(new FormatInvocation(FormatInvocationType.General, value, format.ToString(), newValue));
return newValue;
}
public int CountFormatInvocations(FormatInvocationType formatInvocationType)
{
if (formatInvocationType == FormatInvocationType.All)
return FormatInvocations.Count;
return FormatInvocations.Count(f => f.FormatInvocationType == formatInvocationType);
}
public void PrintFormatInvocations()
{
foreach (FormatInvocation f in FormatInvocations)
Console.WriteLine($"Invocation type:\t{f.FormatInvocationType}\n" +
$"\tOriginal value:\t\t{f.Value}\n" +
$"\tOriginal format:\t{f.OriginalFormat}\n" +
$"\tNew value:\t\t\t{f.NewValue}\n");
}
private readonly string mNumberFormat;
private readonly string mDateFormat;
private readonly string mGeneralFormat;
private List<FormatInvocation> FormatInvocations { get; } = new List<FormatInvocation>();
private class FormatInvocation
{
public FormatInvocationType FormatInvocationType { get; }
public object Value { get; }
public string OriginalFormat { get; }
public string NewValue { get; }
public FormatInvocation(FormatInvocationType formatInvocationType, object value, string originalFormat, string newValue)
{
Value = value;
FormatInvocationType = formatInvocationType;
OriginalFormat = originalFormat;
NewValue = newValue;
}
}
public enum FormatInvocationType
{
Numeric, DateTime, General, All
}
}
Voir également
- enum CalendarType
- interface IFieldResultFormatter
- espace de noms Aspose.Words.Fields
- Assemblée Aspose.Words