我有以下问题。
在一个类中,我声明:
vulnerabilityDetailsTable.AddCell(new PdfPCell(new Phrase(currentVuln.Published.ToString(), _fontNormale)) { Border = PdfPCell.NO_BORDER, Padding = 5, MinimumHeight = 30, PaddingTop = 10 });
有趣的是:currentVuln。Published.ToString()。这工作很好。
Published是声明为可空的日期时间属性,其方式如下:
public System.DateTime? Published { get; set; }
问题是,在前面的方法中,currentVuln的打印值。Published.ToString()类似于18/07/2014 00:00:00(时间也包含在日期中)。
我只想显示日期,不想显示时间,所以我尝试使用类似的方式:
currentVuln.Published.ToShortDateString()
但它不起作用,我在Visual Studio中获得以下错误消息:
错误4'System.Nullable
这似乎是因为我的DateTime字段是可空的。
我错过了什么?如何解决此问题?
值类型<code>可为空
此类型<code>可为空
这就是为什么您现有的代码是合法的。
类型< code >可为空
currentVuln.Published.ToShortDateString() /* error */
你将需要
currentVuln.Published.HasValue ? currentVuln.Published.Value.ToShortDateString() : ""
或者等效地
currentVuln.Published != null ? currentVuln.Published.Value.ToShortDateString() : ""
(两者在运行时做的都一样)。如果您愿意,可以将字符串< code>""更改为其他名称,如< code >“never”或< code >“not published”。
如果 Publish 属性
(其 get
访问器)被调用两次可能是一个问题,则需要在某个地方取出一个临时变量 var publish = currentVuln.Publish;
,然后使用:published。哈斯值 ?发表。Value.ToShortDateString() : “”
以防其他人遇到此线程。您可以使用.value.ToShortDateString()。这将解决这个问题。
您是对的,这是因为您的日期时间
字段可为空。
DateTime
的扩展方法不适用于DateTime
,但要理解原因,您必须认识到实际上没有日期时间
类。
最常见的是,我们使用< code >?
语法,如< code>DateTime?,< code>int?,等等。但这只是< code>Nullable的语法糖
public Nullable<DateTime> Published { get; set; }
所有这些明显独立的<code>可空</code>类型都来自一个泛型<code>可以空
HasValue
(用于测试基础包装类型是否具有值),以及值
(用于访问该基础值,假设有一个)首先检查以确保有一个值,然后使用<code>value</code>属性访问基础类型(在本例中为<code>DateTime</code>),以及通常可用于该类型的任何方法。
if (currentVuln.Published.HasValue)
{
// not sure what you're doing with it, so I'll just assign it...
var shortDate = currentVuln.Published.Value.ToShortDateString();
}
对于C#6.0及更高版本,您可以使用null条件而不是。值
:
var shortDate = currentVuln.Published?.ToShortDateString();
问题内容: 我的Firebase数据库中具有以下JSON结构: 我正在阅读以下代码: 但是我得到这个错误: 线程中的异常:无法反弹以键入 如何将用户读入Java对象? 问题答案: Firebase使用Jackson允许将Java对象序列化为JSON,并允许将JSON反序列化为Java对象。你可以在Jackson网站上找到有关Jackson的更多信息,以及此页面上有关Jackson注释的信息。 在此
问题内容: 表单提交后,我将返回一些搜索结果。一切正常,直到我到达一个名为SMALLDATETIME并允许为NULL的字段。返回的行中至少有一个字段为NULL。正如您在下面的代码中看到的那样,当它不为NULL时,我会将其从Date转换为String没问题,但是对于包含NULL的行,我收到一条错误消息。 有任何想法吗? 代码: 错误信息: 警告:date_format()期望参数1为DateTime
在这里,我试图访问数据帧上的(LanguageWorkedWith)列,并在其中包含Python时对其进行过滤。 但它一直产生这样的错误: 我以前在不同的列上使用过str.contains()方法,它很有效。我很高兴知道为什么它对一个人有效,对另一个人无效。
我想在RxJava中实现一个下载一些文件的处理队列。我想下载的文件数量可能高达100个左右。 一切都是在Android上使用RxJava 1.1.1开发的 我做错了什么?
看到这个错误: ] 所以,流程是这样的: > 界面ReviewApi- 类 ReviewRepository @Inject constructor( private val reviewApi: ReviewApi ) @HiltViewModel类 ReviewViewModel @Inject constructor(private val repository: ReviewReposit
我使用的是spring boot和spring data dynamodb。当从dynamodb获取数据时,我得到了NullPointerException。这是我的实体课程 元对象类 这就是DynamoDb中存在的东西 我估计地图有问题。请引导。我的仓库类, 我使用这个方法findMyEntityByHashKeyAndSortKey来获取数据, 异常日志 为什么它会给出NullPointerE