Pergunta

Não sei o que há de errado com a seguinte sequência:

"Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + "  to  " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") +  ")"

Não consigo obter a string concatenada. estou obtendo Report(29-Dec-2009. Isso é tudo e o resto fica de fora da string.

Qual é a razão?

Foi útil?

Solução

Experimente isso:

string filename = 
    String.Format(
        "Report({0:dd-MMM-yyyy} to {1:dd-MMM-yyyy})",
         System.DateTime.Now, System.DateTime.Now.AddMonths(-1));

EDITAR: Desde que em seu Download da caixa Você quebrou seu nome de arquivo no primeiro espaço em branco, você pode tentar um desses:

filename = HttpUtility.UrlEncode(filename); // OR
filename = """" + filename + """";

Parece que alguns navegadores não lida muito bem com os brancos: Os nomes de arquivos com espaços são truncados após o download. Verifique se você pode baixar outros nomes de arquivos com espaço em branco em outros sites.

Outras dicas

Você precisa atribuí -lo a algo:

string s = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"

ATUALIZAÇÃO: Acabei de ver sua atualização para a pergunta. Como você está exibindo a string? Acho que você está exibindo em uma GUI e a etiqueta é muito curta para exibir o texto completo.

Experimente isso:

string newstring = 
  string.Format(
                "Report ({0} to {1})", 
                System.DateTime.Now.ToString("dd-MMM-yyyy"), 
                System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
               );

O que você está atribuindo o resultado? Seria mais fácil ler o código se você usasse string.format

Você não está atribuindo o resultado concatenado a nada, então não pode usá -lo:

string myConcatenated = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + ")";

Usando este código ...

string test = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " +
                   System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")";

Eu vi o seguinte resultado.

Report(29-Dec-2009 to 29-Nov-2009)

Pode ser que a string esteja sendo truncada mais tarde. Certifique -se de definir um ponto de interrupção logo após a execução deste código e verifique o valor da variável para a qual ela é atribuída (teste no meu caso).

Se, como no seu pergunta anterior, você está usando esse valor para criar um arquivo, pode ser que seja o espaço antes "para" que está causando o problema. Tente usar:

"Report("
    + System.DateTime.Now.ToString("dd-MMM-yyyy")
    + "To"
    + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
    +  ")"

Em vez disso, e veja se isso o corrige.

Se isso faz Corrija -o, você provavelmente precisará descobrir como citar todo o nome do arquivo para que não seja tratado como os três argumentos separados, "Report(29-Dec-2009", "to" e "29-Nov-2009)". Ou simplesmente deixe seus relatórios nomes sem espaços.

Eu escolheria o último, mas depois sou fundamentalmente oposto aos espaços em nomes de arquivos - eles tornam os scripts simples muito mais difíceis de escrever :-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top