如何得到今天的一天,并使用vala/genie将其转换为字符串?
我有这个代码,但它失败。为什么?如何得到今天的一天,并使用vala/genie将其转换为字符串?
// tomar la fecha
fecha = GLib.Date();
print "cogiendo"
var s = new StringBuilder("Fecha:");
dia:DateDay= fecha.get_day();
s.append_printf ("%u",dia);
print s.str;
fecha_str=s.str;
油嘴返回: g_date_get_day:断言 'g_date_valid(d)' 失败
我建议使用GLib.DateTime
class来达到此目的。
如果您希望将当前日期作为区域设置相关或独立格式,则不会写入。
区域设置依赖,使用format()
:
var dt = new DateTime.now_local();
stdout.puts (dt.format ("%x"));
区域设置独立的,使用to_string()
(注意,这也将包括时间):
var dt = new DateTime.now_local();
stdout.puts (@"$dt");
在自定义格式使用format()
:
var dt = new DateTime.now_local();
stdout.puts (dt.format ("%d/%m/%Y")); // 29/09/2014
我把自定义的fo rmat从你自己的答案,但我不会使用它,因为它很混乱,因为通常与/
分隔日期格式"%m/%d/%Y"
或"%m/%d/%y"
。
我宁愿无论是本地默认格式(这是用户期望的内容)或ISO 8601格式,你to_string()
或不与format ("%F")
的时候得到的。
从文档:
如果日期-结构从
g_date_new
获得,这将是安全的变异但无效,因此对于日历计算不安全。
也许你想要set_time_t
或set_time_val
。如果你想今天的日期,fecha.set_time_t(time_t());
谢谢,但问题出在了错误的位置。 – txasatonga 2014-09-28 12:37:03
这段代码顺利!在gnome的vala样本中搜索:
var now = new DateTime.now_local();
fecha_str = now.get_day_of_month().to_string()+"/"+now.get_month().to_string()+"/"+now.get_year().to_string()
更好地使用'DateTime.format()',看我的答案。 – 2014-09-29 09:45:45
对不起,我想采取当前日期,今天的日期。 – txasatonga 2014-09-28 12:29:35