一年中的某一天

一年中的某一天

我正在使用一年中的某一天我的文档中有很多,我想知道我是否可以让 LaTex 帮我计算?例如:2013178,其中 2013 是(令人惊讶)当前年份(我知道可以通过 实现\the\year),并且178,一年中的某一天。

用英语和德语进行谷歌搜索(“年度 LaTex 日”“乳胶年度标签”) 并仅找到有关星期几和月份的帖子和操作方法。

PS:我给它贴上了标签因为我认为这可能需要解决。

答案1

为什么不用更简单的方法datenumber

平均能量损失

\documentclass{article}
\usepackage{xcolor}         % to distinguish coupled numbers 
\usepackage{datenumber}
\setdate{2013}{6}{27}       % date of the OP
\setstartyear{\thedateyear} % count days from here


\begin{document}

The \datedate{} was  \thedateyear{\color{red!80!black}\thedatenumber} \\

Today (\today) \setdatetoday is \thedateyear{\color{blue}\thedatenumber}

\end{document}

答案2

您可以使用 PGF 的calendar库将当前日期和当前年份的第一天转换为儒略日期:

\documentclass{article}

\usepackage{pgfkeys, pgfcalendar}

\newcount\julianA
\newcount\julianB

\newcommand\doy{%
    \pgfcalendardatetojulian{\year-\month-\day}{\julianA}%
    \pgfcalendardatetojulian{\year-1-1}{\julianB}%
    \advance\julianA by -\julianB%
    \advance\julianA by 1\relax%
    \the\year\the\julianA%
}

\begin{document}
Day of the year: \doy
\end{document}

答案3

我对功能强大的尝试expl3。我知道界面一点都不好,但请忍耐一下,我是个愚蠢的新手。:)

\documentclass{article}

\usepackage{expl3}
\usepackage{xparse}

\ExplSyntaxOn

\bool_new:N \l_leap_year_bool
\int_new:N \l_day_of_year_int
\cs_generate_variant:Nn \int_to_arabic:n { V }

\DeclareDocumentCommand \dayoftheyear { m m m }
{
  \bool_set:Nn \l_leap_year_bool
  {
    \int_compare_p:n { \int_mod:nn { #3 } { 4 } = 0 } &&
    \int_compare_p:n { \int_mod:nn { #3  } { 100 } != 0 } ||
    \int_compare_p:n { \int_mod:nn { #3  } { 400 } = 0 }
  }
  \int_case:nnn { #2 - 1 }
  {
    { 1 } { \int_set:Nn \l_day_of_year_int { 31 } }
    { 2 } { \int_set:Nn \l_day_of_year_int { 59 } }
    { 3 } { \int_set:Nn \l_day_of_year_int { 90 } }
    { 4 } { \int_set:Nn \l_day_of_year_int { 120 } }
    { 5 } { \int_set:Nn \l_day_of_year_int { 151 } }
    { 6 } { \int_set:Nn \l_day_of_year_int { 181 } }
    { 7 } { \int_set:Nn \l_day_of_year_int { 212 } }
    { 8 } { \int_set:Nn \l_day_of_year_int { 243 } }
    { 9 } { \int_set:Nn \l_day_of_year_int { 273 } }
    { 10 } { \int_set:Nn \l_day_of_year_int { 304 } }
    { 11 } { \int_set:Nn \l_day_of_year_int { 334 } }
  }
  { }
  \bool_if:nT 
  {
    \l_leap_year_bool && \int_compare_p:n { #2 > 2}
  } { \int_incr:N \l_day_of_year_int }
  \int_add:Nn \l_day_of_year_int { #1 }
  \int_to_arabic:V \l_day_of_year_int
}
\ExplSyntaxOff

\begin{document}

Day of the year: \dayoftheyear{27}{6}{2013}

\end{document}

希望能帮助到你。:)

答案4

我知道有一天我的\juliandate_calc:nnnn宏会派上用场。;-)

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn

\NewDocumentCommand{\dayofyear}{o}
 {
  \IfNoValueTF{#1}
   {
    \aaki_day_of_year:nnn { \year } { \month } { \day }
   }
   {
    \aaki_day_of_year:n { #1 }
   }
 }
\cs_new:Npn \aaki_day_of_year:n #1
 {
  \aaki_day_of_year:w #1 \q_stop
 }
\cs_new:Npn \aaki_day_of_year:w #1 - #2 - #3 \q_stop
 {
  \aaki_day_of_year:nnn { #1 } { #2 } { #3 }
 }

\cs_new:Npn \aaki_day_of_year:nnn #1 #2 #3
 {
  \int_eval:n { #1 }
  \int_eval:n 
   {
    \juliandate_calc:nnnn { #3 } { #2 } { #1 } { \use:n }
    -
    \juliandate_calc:nnnn { 1 } { 1 } { #1 } { \use:n }
    + 1
   }
 }

\cs_new:Npn \juliandate_calc:nnnn #1 #2 #3 #4 % #1 = day, #2 = month, #3 = year, #4 = what to do
 {
  #4
   {
    \int_eval:n
     {
      #1 +
      \int_div_truncate:nn
       {
        153 * (#2 + 12 * \int_div_truncate:nn { 14 - #2 } { 12 } - 3) + 2
       }
       { 5 } +
      365 * (#3 + 4800 - \int_div_truncate:nn { 14 - #2 } { 12 } ) +
      \int_div_truncate:nn { #3 + 4800 - \int_div_truncate:nn { 14 - #2 } { 12 } } { 4 } -
      \int_div_truncate:nn { #3 + 4800 - \int_div_truncate:nn { 14 - #2 } { 12 } } { 100 } +
      \int_div_truncate:nn { #3 + 4800 - \int_div_truncate:nn { 14 - #2 } { 12 } } { 400 } -
      32045
     }
   }
 }

\ExplSyntaxOff

\begin{document}

\dayofyear

\dayofyear[2013-1-1]

\dayofyear[2013-12-31]

\dayofyear[2012-12-31]

\end{document}

根据日、月、年得出儒略日期的算法可以在网上找到。

内部命令\aaki_day_of_year:n(用于 ISO 格式的日期YYYY-MM-DD)是完全可扩展的。

在此处输入图片描述

相关内容