Название месяца в NAnt - PullRequest
       1

Название месяца в NAnt

1 голос
/ 14 октября 2011

Как узнать название текущего месяца в NAnt?

Я использую задачу, подобную приведенной ниже, для обновления метки нашего сайта, которая показывает дату / время создания сайта. Однако мне нужно, чтобы дата была в определенном формате, а не менялась в зависимости от формата машины.

<xmlpoke file="\\path\to\server\folder\Web.config" 
    xpath="/configuration/appSettings/add[@key = 'SiteLabel']/@value" 
    value="[SQLServer].[SQLDatabase] - ${datetime::to-string(datetime::now())}" />

Мне нужен формат "MMM DD, YYYY". Кажется, NAnt не позволяет мне указать формат, но я могу получить отдельные части даты, используя функции NAnt.

Можно ли как-нибудь узнать название текущего месяца, используя функции NAnt?
${datetime::get-month(datetime::now())} возвращает только номер месяца, а не название.

Ответы [ 3 ]

3 голосов
/ 15 октября 2011

Более элегантный способ:

<target name="echo-month">
    <script prefix="utils" language="C#">
         <code>
             <![CDATA[
                 [Function("GetMonth")]
                 public static string GetMonth() {
                    return System.DateTime.Now.ToLongDateString().Split(new Char[]{' '})[1];
                 }
             ]]>
         </code>
   </script>

   <property name="the_month" value="${utils::GetMonth()}"/>
   <echo message="The current month is ${the_month}"/>
</target>
1 голос
/ 14 октября 2011

Это может быть не элегантно, но вы могли бы что-то вроде этого:

<target name="GetMonth">

    <property name="today.month" value="${datetime::get-month(datetime::now())}" />

    <if test="${today.month=='1'}">
        <property name="month" value="Janurary" />
    </if>
    <if test="${today.month=='2'}">
        <property name="month" value="Feb" />
    </if>
    <if test="${today.month=='3'}">
        <property name="month" value="March" />
    </if>
    <if test="${today.month=='4'}">
        <property name="month" value="April" />
    </if>
    <if test="${today.month=='5'}">
        <property name="month" value="May" />
    </if>
    <if test="${today.month=='6'}">
        <property name="month" value="June" />
    </if>
    <if test="${today.month=='7'}">
        <property name="month" value="July" />
    </if>
    <if test="${today.month=='8'}">
        <property name="month" value="Aug" />
    </if>
    <if test="${today.month=='9'}">
        <property name="month" value="Sept" />
    </if>
    <if test="${today.month=='10'}">
        <property name="month" value="Oct" />
    </if>
    <if test="${today.month=='11'}">
        <property name="month" value="Nov" />
    </if>
    <if test="${today.month=='12'}">
        <property name="month" value="Dec" />
    </if>

    <echo>${month}</echo>
</target>
0 голосов
/ 06 марта 2015

Почему бы не использовать метод format-to-string?Этот метод встроен в последнюю версию NANT, поэтому нет никаких причин для ролевой работы.

Month:
${datetime::format-to-string(datetime::now(), 'MMMM')}

Format in question:
${datetime::format-to-string(datetime::now(), 'MMMM d, yyyy')}

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

http://nant.sourceforge.net/release/0.92/help/functions/datetime.format-to-string%28System.DateTime,System.String%29.html

http://www.csharp -examples.net / string-format-datetime /

...