C# прилагают метку времени к Filepath

У меня есть следующая проблема или вопрос, У меня есть эта функция

private void SavePic(Canvas canvas, string filename)
    {
        RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
         (int)canvas.Width, (int)canvas.Height,
         96d, 96d, PixelFormats.Pbgra32);
       //needed otherwise the image output is black
        canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
        canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));

        renderBitmap.Render(canvas);

        //JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        PngBitmapEncoder encoder = new PngBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(renderBitmap));

        using (FileStream file = File.Create(filename))
        {

            encoder.Save(file);
        }
    }

and the corresponding call SavePic(mySuperDefaultPainting, @"C:\KinDraw\out.png");

Теперь я хотел приложить имя файла дата + время? Можно ли захватить эту функцию DateTime в вызове функции?

возможно, я могу кто-то помогать здесь?

0
Они помогут: msdn.microsoft.com/en-us//library/system.datetime.now.aspxmsdn.microsoft.com/en-us/library/zdtaw1bw.aspxmsdn.microsoft.com/en-us/library/az4se3k1.aspxmsdn.microsoft.com/en-us/library/8kb3ddd4.aspx
добавлено автор Andrew Savinykh, источник

5 ответы

попробуйте (Обновленный для Пути к файлу) :

string fileName=string.Format("{0}-{1:ddMMMyyyy-HHmm}.png", @"C:\KinDraw\out", 
                                                    DateTime.Now);
if(!Directory.Exists(Path.GetDirectoryName(fileName)))
{
    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
}

SavePic(mySuperDefaultPainting, fileName);

Скажите, что время - 19:30 29-JAN-2013 , оно даст вам: C:\KinDraw\out-29JAN2013-1930.png .

Но, пожалуйста, проверьте детали о CreateDirectory на эта страница MSDN. Также ищите Исключения и обертка в выгода попытки блоки.

3
добавлено
@viv1d обновленный ответ...
добавлено автор TheVillageIdiot, источник
Спасибо за все подсказки и совет, но он всегда жалуется и терпит крах если справочник для продукции не exisitert? Gibts там способ создать справочник, если это не существует?
добавлено автор viv1d, источник

Просто поместите эту линию там:

string stampedFileName = filename.Replace(".",
    string.Format("{0:YYYY-mm-dd hhmmss}", DateTime.UtcNow) + ".");

и затем изменение

using (FileStream file = File.Create(filename))

к

using (FileStream file = File.Create(stampedFilename))

It is important к use DateTime.UtcNow rather than DateTime.Now because the former is not influenced by daylight saving time.

EDIT: The format I propose above has the advantage that sorting your filenames alphabetically then auкmatically also sorts them chronologically.

1
добавлено
если (! Справочник. Существуйте (путь)) {Справочник. CreateDirectory (путь);}
добавлено автор Roy Dictus, источник
Спасибо за все подсказки и совет, но он всегда жалуется и терпит крах если справочник для продукции не exisitert? Gibts там способ создать справочник, если это не существует?
добавлено автор viv1d, источник
string timestamp =DateTime.Now.ToString("MMddyyyy.HHmmss");
SavePic(mySuperDefaultPainting, @"C:\KinDraw\out"+timestamp+".png");

Обновление: (чтобы создать справочник, если это не существует)

if (!Directory.Exists(filepath))
    Directory.CreateDirectory(filepath);

Надежда это помогает:)

1
добавлено
@Avishek, который ваше обновленное заявление будет всегда возвращать ложный, проверяя на справочник и давая путь, который заканчивается файлом.
добавлено автор TheVillageIdiot, источник
@viv1d: Посмотрите обновление ответа.:)
добавлено автор Avishek, источник
@viv1d: Нет, необходимо поручить только имени каталога (без имени файла) filepath
добавлено автор Avishek, источник
Спасибо за все подсказки и совет, но он всегда жалуется и терпит крах если справочник для продукции не exisitert? Gibts там способ создать справочник, если это не существует?
добавлено автор viv1d, источник

Попытайтесь добавить это в начале своего кода:

var extension = Path.GetExtension(filename);
var newName = filename.Replace(filename, extension) + DateTime.Now.ToString("yyyy-MM-dd HH:mm:dd") + extension;
1
добавлено
последовательность. Формат() является вашим другом.
добавлено автор Malmi, источник
Спасибо за все подсказки и совет, но он всегда жалуется и терпит крах если справочник для продукции не exisitert? Gibts там способ создать справочник, если это не существует?
добавлено автор viv1d, источник

Использование:

string result = "myfile.txt".AppendTimeStamp();
//myfile20130604234625642.txt

Дополнительный метод

public static class MyExtensions
{
    public static string AppendTimeStamp(this string fileName)
    {
        return string.Concat(
            Path.GetFileNameWithoutExtension(fileName),
            DateTime.Now.ToString("yyyyMMddHHmmssfff"),
            Path.GetExtension(fileName)
            );
    }
}
0
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot