Как установить формат даты yyyy / MM / dd в строки datagridview c # [duplicate]

Полагаю, я понимаю, о чем вы спрашиваете. Хотя вы говорите, что хотите «вернуть» его (по сути) из метода выборки, достаточно сказать, что вы просто хотите использовать значение, полученное после завершения выборки. Если это так, это то, что вам нужно сделать:

  1. Создать переменную в верхней части вашего класса
  2. Извлечь ваше значение (которое вы сделали в основном правильно)
  3. Установите общедоступную переменную в вашем классе, равную полученному значению

. После того, как ваша выборка завершится успешно, вы можете делать много вещей с переменной. 4а и 4b - некоторые простые примеры:

4a. Изменить. В качестве примера использования вы можете запустить все, что вам нужно для запуска в вашем классе, который использует yourNameVariable (и вы можете быть уверены, что yourNameVariable не является нулевым)

4b. Изменить: в качестве примера использования вы можете использовать переменную в функции, которая запускается кнопкой onClickListener.


Попробуйте это.

// 1. Create a variable at the top of your class
private String yourNameVariable;

// 2. Retrieve your value (which you have done mostly correctly)
private void getUserName(String uid) {
    databaseReference.child(String.format("users/%s/name", uid))
            .addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // 3. Set the public variable in your class equal to value retrieved
            yourNameVariable = dataSnapshot.getValue(String.class);
            // 4a. EDIT: now that your fetch succeeded, you can trigger whatever else you need to run in your class that uses `yourNameVariable`, and you can be sure `yourNameVariable` is not null.
            sayHiToMe();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}
    });
}

// (part of step 4a)
public void sayHiToMe() {
  Log.d(TAG, "hi there, " + yourNameVariable);
}

// 4b. use the variable in a function triggered by the onClickListener of a button.
public void helloButtonWasPressed() {
  if (yourNameVariable != null) {
    Log.d(TAG, "hi there, " + yourNameVariable);
  }
}

Затем вы может использовать yourNameVariable, где бы вы ни захотели на протяжении всего вашего класса.


Примечание: просто убедитесь, что вы проверяете, что yourNameVariable не является нулевым при его использовании, поскольку onDataChange является асинхронным и может не завершиться в то время, когда вы пытаетесь использовать его в другом месте.

16
задан Rui Jarimba 14 April 2013 в 15:46
поделиться

6 ответов

Я думаю, что это просто, так как вы можете конвертировать в любой формат и из любого формата без какой-либо путаницы

 DateTime.ParseExact(txt.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));
0
ответ дан Arun Prasad E S 28 August 2018 в 18:09
поделиться

Это почти то же самое, просто используйте метод DateTime.ToString(), например:

DateTime.Now.ToString("dd/MM/yy");

Или:

DateTime dt = GetDate(); // GetDate() returns some date
dt.ToString("dd/MM/yy");

Кроме того, вам может потребоваться использовать один предопределенных форматов даты / времени, например:

DateTime.Now.ToString("g");
// returns "02/01/2009 9:07 PM" for en-US
// or "01.02.2009 21:07" for de-CH 

Они гарантируют, что формат будет правильным, независимо от текущих настроек локали.

Проверьте следующие страницы MSDN для получения дополнительной информации


Дополнительная дополнительная информация:

Если вы хотите отобразить дату в определенной локали / культуре, тогда существует перегрузка метода ToString(), который принимает IFormatProvider:

DateTime dt = GetDate();
dt.ToString("g", new CultureInfo("en-US")); // returns "5/26/2009 10:39 PM"
dt.ToString("g", new CultureInfo("de-CH")); // returns "26.05.2009 22:39"

Или, вы можете установить CultureInfo текущего потока до форматирования даты:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
dt.ToString("g"); // returns "5/26/2009 10:39 PM"

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-CH");
dt.ToString("g"); // returns "26.05.2009 22:39"
44
ответ дан M4N 28 August 2018 в 18:09
поделиться

Еще лучше, используйте только

DateTime.Now.ToString() 

или

DateTime.Now.ToString(CultureInfo.CurrentCulture) 

, чтобы использовать формат, который пользователь предпочитает.

8
ответ дан Rui Jarimba 28 August 2018 в 18:09
поделиться

Попробуйте следующее:

String.Format("{0:MM/dd/yyyy}", DateTime.Now); // 01/31/2009
String.Format("{0:dd/MM/yyyy}", DateTime.Now); // 31/01/2009
String.Format("{dd/MM/yyyy}", DateTime.Now); // 31/01/2009
2
ответ дан S.Lott 28 August 2018 в 18:09
поделиться

Вы также можете записать

DateTime aDate = new DateTime(); 
string s = aDate.ToShortDateString();

для короткой нотации

или

DateTime aDate = new DateTime(); 
string s = aDate.ToLongDateString();

для длинной записи типа «воскресенье, 1 февраля , 2009 ".

Или посмотрите MSDN на возможности .ToString (" ??? ");

2
ответ дан Sorskoot 28 August 2018 в 18:09
поделиться

Я столкнулся с тем же вопросом. Мне нужно было добавить ссылку в верхней части класса и изменить CultureInfo текущего потока.

using System.Threading;

string cultureName = "fr-CA";
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);

DateTime theDate = new DateTime(2015, 11, 06);
theDate.ToString("g");
Console.WriteLine(theDate);

Все, что вам нужно сделать, это изменить название культуры, например : «en-US» = Соединенные Штаты «fr-FR» = франкоязычная Франция «fr-CA» = франкоязычная Канада и т. д. ...

0
ответ дан user2146538 28 August 2018 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: