Datetime $date未选取当前日期-Sitecore

Datetime $date未选取当前日期-Sitecore,datetime,sitecore,Datetime,Sitecore,在sitecore标准值中设置datetime字段的默认值时出现问题。 我知道$date取当前日期。如果我在日期时间字段的标准值中指定$date,它总是将日期作为“1/1/0001” 我该如何解决这个问题 可以在标准值的字段中输入标记,然后将这些标记替换为其他值,但是只有在创建使用该模板的新项目时才可以。它不会为使用此模板的现有项目设置日期 $date是令牌之一,它与系统日期(yyyyMMdd)一起重播 约翰·韦斯特(John West)写了一篇博客文章,解释了如何使用它 编辑: 以下代码是主

在sitecore标准值中设置datetime字段的默认值时出现问题。 我知道$date取当前日期。如果我在日期时间字段的标准值中指定$date,它总是将日期作为“1/1/0001”


我该如何解决这个问题

可以在标准值的字段中输入标记,然后将这些标记替换为其他值,但是只有在创建使用该模板的新项目时才可以。它不会为使用此模板的现有项目设置日期

$date是令牌之一,它与系统日期(yyyyMMdd)一起重播

约翰·韦斯特(John West)写了一篇博客文章,解释了如何使用它


编辑:

以下代码是
主变量替换器
类的一部分,用于替换$date令牌:

text=this.ReplaceWithDefault(文本“$date”,(Func)(()=>DateUtil.IsoNowDate),上下文);
它是从
ReplaceVariables
处理器调用的,该处理器是
expandInitialFieldValue
管道的一部分(有关所有
expandInitialFieldValue
处理器,请参见
/sitecore/admin/showconfig.aspx

您可以尝试将自己的处理器添加到此管道,并查看未正确替换
$date
的原因:

公共类替换变量:ExpandInitialFieldValueProcessor
{
公共覆盖无效过程(ExpandInitialFieldValueArgs args args)
{
Assert.ArgumentNotNull((object)args,“args”);
MasterVariablesReplacer variablesReplacer=Factory.GetMasterVariablesReplacer();
字符串文本=args.SourceField.Value;
if(variablesReplacer==null)
args.Result=文本;
其他的
args.Result=variablesReplacer.Replace(文本,args.TargetItem);
}
}

可以在标准值的字段中输入标记,然后将这些标记替换为其他值,但是只有在创建使用该模板的新项目时才可以输入标记。它不会为使用此模板的现有项目设置日期

$date是令牌之一,它与系统日期(yyyyMMdd)一起重播

约翰·韦斯特(John West)写了一篇博客文章,解释了如何使用它


编辑:

以下代码是
主变量替换器
类的一部分,用于替换$date令牌:

text=this.ReplaceWithDefault(文本“$date”,(Func)(()=>DateUtil.IsoNowDate),上下文);
它是从
ReplaceVariables
处理器调用的,该处理器是
expandInitialFieldValue
管道的一部分(有关所有
expandInitialFieldValue
处理器,请参见
/sitecore/admin/showconfig.aspx

您可以尝试将自己的处理器添加到此管道,并查看未正确替换
$date
的原因:

公共类替换变量:ExpandInitialFieldValueProcessor
{
公共覆盖无效过程(ExpandInitialFieldValueArgs args args)
{
Assert.ArgumentNotNull((object)args,“args”);
MasterVariablesReplacer variablesReplacer=Factory.GetMasterVariablesReplacer();
字符串文本=args.SourceField.Value;
if(variablesReplacer==null)
args.Result=文本;
其他的
args.Result=variablesReplacer.Replace(文本,args.TargetItem);
}
}

可以在标准值的字段中输入标记,然后将这些标记替换为其他值,但是只有在创建使用该模板的新项目时才可以输入标记。它不会为使用此模板的现有项目设置日期

$date是令牌之一,它与系统日期(yyyyMMdd)一起重播

约翰·韦斯特(John West)写了一篇博客文章,解释了如何使用它


编辑:

以下代码是
主变量替换器
类的一部分,用于替换$date令牌:

text=this.ReplaceWithDefault(文本“$date”,(Func)(()=>DateUtil.IsoNowDate),上下文);
它是从
ReplaceVariables
处理器调用的,该处理器是
expandInitialFieldValue
管道的一部分(有关所有
expandInitialFieldValue
处理器,请参见
/sitecore/admin/showconfig.aspx

您可以尝试将自己的处理器添加到此管道,并查看未正确替换
$date
的原因:

公共类替换变量:ExpandInitialFieldValueProcessor
{
公共覆盖无效过程(ExpandInitialFieldValueArgs args args)
{
Assert.ArgumentNotNull((object)args,“args”);
MasterVariablesReplacer variablesReplacer=Factory.GetMasterVariablesReplacer();
字符串文本=args.SourceField.Value;
if(variablesReplacer==null)
args.Result=文本;
其他的
args.Result=variablesReplacer.Replace(文本,args.TargetItem);
}
}

可以在标准值的字段中输入标记,然后将这些标记替换为其他值,但是只有在创建使用该模板的新项目时才可以输入标记。它不会为使用此模板的现有项目设置日期

$date是令牌之一,它与系统日期(yyyyMMdd)一起重播

约翰·韦斯特(John West)写了一篇博客文章,解释了如何使用它


编辑:

以下代码是
主变量替换器
类的一部分,用于替换$date令牌:

text=this.ReplaceWithDefault(文本“$date”,(Func)(()=>DateUtil.IsoNowDate),上下文);

是从<代码> ReplaceVariables <代码>处理器中调用的,它是PAR。