Apa cara terbaik untuk melokalisasi format tanggal deskriptor?
Sebagai orang dari budaya yang tidak menggunakan mm/dd/yyyy format tahu, itu menjengkelkan harus memasukkan tanggal dalam format ini. Yang .NET framework menyediakan beberapa sangat baik dukungan lokalisasi, sehingga's sepele untuk mengurai tanggal menurut pengguna kebudayaan, tetapi anda sering ingin juga menampilkan petunjuk untuk format yang diperlukan (terutama untuk membedakan antara yy dan yyyy yang dipertukarkan dalam kebanyakan budaya).
Apa cara terbaik untuk melakukan hal ini dalam cara yang masuk akal untuk sebagian besar pengguna (misalnya dd/M/yyy membingungkan karena perubahan dalam kasus ini dan beralih di antara satu dan dua huruf).
Hanya menggunakan ISO-8601. It's standar internasional.
Date and time (current at page generation) expressed according to ISO 8601:
Date: 2014-07-05
Combined date and time in UTC: 2014-07-05T04:00:25+00:00
2014-07-05T04:00:25Z
Week: 2014-W27
Date with week number: 2014-W27-6
Ordinal date: 2014-186
Saya harus setuju dengan OP 'salah' tanggal benar-benar jar dengan DD/MM/YYYY pendidikan dan aku menemukan ISO 8601 tanggal dan waktu sangat mudah untuk bekerja dengan. Untuk sekali standar benar dan engtech memiliki jawaban yang jelas yang doesn't membutuhkan lokalisasi.
Saya akan melaporkan masukan ulang formulir di stack overflow sebagai bug karena berapa banyak jempol sakit itu adalah untuk sebagian besar dunia.
Masalah dengan standar internasional yang cukup banyak ada yang menggunakan mereka. Saya mencoba di mana saya dapat, tapi saya dipaksa untuk menggunakan dd/mm/yyyy hampir di mana-mana dalam kehidupan nyata, yang berarti saya begitu terbiasa untuk itu's selalu merupakan proses sadar untuk menggunakan ISO-8601. Bagi sebagian besar orang-orang yang don't bahkan mencoba untuk menggunakan ISO-8601 itu's bahkan lebih buruk. Jika anda dapat internasionalisasi di mana anda dapat, saya pikir itu's sebuah keuntungan besar.
Di sini saya saat ini metode. Ada saran?
Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;
// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
currentCulture = CultureInfo.InvariantCulture;
}
// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");
Bagaimana memberikan format (mm/dd/yyyy atau mm/dd/yyyy) diikuti oleh printout dari hari ini's upload dalam buku's budaya. MSDN memiliki sebuah artikel di format DateTime untuk orang's budaya, menggunakan CultureInfo objek yang mungkin bisa membantu dalam melakukan hal ini. Kombinasi dari format (yang kebanyakan orang yang akrab dengan) dikombinasikan dengan tanggal saat ini diwakili dalam format yang harus cukup petunjuk untuk orang-orang tentang bagaimana mereka harus memasukkan tanggal. (Juga mencakup kalender kontrol bagi mereka yang masih tidak bisa figure it out).
Bentuk pendek lebih nyaman dan membantu menghindari kesalahan ejaan. Melokalisasi sebagaimana berlaku, tetapi pastikan untuk menampilkan format yang diharapkan (tidak meninggalkan pengguna buta). Menyediakan date-picker control sebagai opsional ajudan untuk mengisi di lapangan.
Sebagai tambahan, on-the-fly parsing dan menampilkan tanggal dalam format yang lama mungkin bisa membantu juga.
Pilihan terbaik: saya malah akan merekomendasikan untuk menggunakan standar date picker.
Alternatif: setiap kali isi mengedit kontrol perubahan, mengurai dan tampilan (dalam kontrol terpisah?) panjang format tanggal (yaitu: input "03/04/09" display "Anda input: Maret 4, 2009")