1

我已经编写了下面的查询来从实体创建一个 xml,我需要在 .NET 中yyyymmddhhmmss以字段格式获取日期时间SLOTTINGTIME,所以我考虑编写一种新方法来获取所需格式的日期时间。

var slottingmessagexml = new XDocument(new XElement("Message",
    new XAttribute("ID","SLT"),
    new XElement("Record",
        new XAttribute("STORENO",slottingmessage.StoreID),
        new XAttribute("PICKLOCATION",slottingmessage.PickLocation),
        new XAttribute("TPNB",slottingmessage.ProductID),
        new XAttribute("SLOTTINGTIME",GetDateTimeInNewFormat(slottingmessage.SlottingDateTime)),
        new XAttribute("SLOTTTINGACTION",slottingmessage.SlottingAction))
    )
);
4

3 回答 3

15

您可以使用

string strDate = DateTime.Now.ToString("yyyyMMddhhmmss");

如果需要 24 小时格式,则在格式字符串中使用大写字母HH代替。hh

请记住,第一个MM 应该大写,因为小写mm代表分钟,而大写代表月份。

对于您的特定情况,您可以执行以下操作,而不是编写新方法:

new XAttribute("SLOTTINGTIME",slottingmessage.SlottingDateTime.ToString("yyyyMMddhhmmss")),

hh还要添加一件事:由于字符串中的小写部分,输出将包含 12 小时格式的 Hour 。不确定您是否需要,因为没有上午/下午,这无法指示准确的时间。为此,使用HH小时,它将以 24 小时格式显示小时。所以你的代码可能是:

new XAttribute("SLOTTINGTIME",slottingmessage.SlottingDateTime.ToString("yyyyMMddHHmmss")),
                                                                               //^^ for 24 hours format
于 2013-04-18T10:25:50.023 回答
5

这个怎么样?

public string GetDateTimeInNewFormat(DateTime d)
{
    return d.ToString("yyyyMMddhhmmss");
}

或者,对于 24 小时格式:

public string GetDateTimeInNewFormat(DateTime d)
{
    return d.ToString("yyyyMMddHHmmss");
}
于 2013-04-18T10:26:21.150 回答
0

尽管您的问题没有明确说明您要查找的格式,但我认为根据您的示例格式,yyyymmddhhmmss我们可以假设您想要[years][months][days][hours][minutes][seconds].

基于此,我们可以将每个部分分解如下:

:如果你想要全年,那么你yyyy是正确2013的,例如会产生。一个常见的(尽管不鼓励)替代方案可能是yy(例如13

:目前您的尝试mm不会返回月。它将产生分钟。您可能想要MM(例如04)。替代包括MMM(eg APR) 和MMMM(eg April)

Days:你已经有了这个正确的。例如dd会产生。18

Hours:您的尝试hh将产生 12 小时的时间格式。如果这是你所追求的,那很好。但是鉴于您没有尝试包含 AM/PM 指示符(tt顺便可以使用),那么我建议您选择 24 小时格式,即HH(大写)

分钟:你的分钟是正确的,例如mm会产生。52

Seconds:再一次,ss是正确的,33例如会产生。


现在我们可以将它们串在一起并生成以下格式,其中包括我推荐的 24 小时时间格式。然后可以将其传递给DateTime对象ToString()函数,如下所示:

var stringDateTime = slottingmessage.SlottingDateTime.ToString("yyyyMMddHHmmss");

如果你想保持你的方法的GetDateTimeInNewFormat方法,那么你可以像这样实现它:

public string GetDateTimeInNewFormat(DateTime dt)
{
    return dt.ToString("yyyyMMddHHmmss");
}

然后将按照您在示例代码中已有的方式调用此函数:

GetDateTimeInNewFormat(slottingmessage.SlottingDateTime)

您可以在此处阅读有关各种日期/时间格式选项的更多信息,其中有大量示例

于 2013-04-18T10:57:34.670 回答